일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 버퍼오버플로우
- PWN
- Linux
- ftz
- Next.js
- NewsClipping
- RITSEC CTF 2019
- 뉴스클리핑
- x64dbg
- BOF
- writeup
- 리버싱
- Shadow 동아리
- CodeEngn
- SQL Injection
- ctf
- Nop Slide
- 어셈블리어
- RITSEC
- reversing
- Python
- 보안뉴스
- webhacking
- 리눅스
- requests
- 웹해킹
- Hackerschool
- buffer over flow
- termux
- HackCTF
Archives
- Today
- Total
Jaeseo's Information Security Story
RITSEC CTF 2019 - WriteUp - Uplink 본문
Uplink
문제구분 | 난이도 | 작성자 |
---|---|---|
Pwn | 상 | JaeseoKim |
문제 내용
문제 풀이
일단 주어지는 주소를 통해 접속을 해봅니다.
root@kali:~# nc uplink.ritsec.club 8001
G��
@��
@��
@��
@��
@��
@��
@��
@��
@��
@��
@��root@kali:~#
접근을 하자 알 수 없는 문자만 출력을 해주는 모습을 볼 수 있습니다. 이때 한번 hex 형태로 받아서 봅니다.
root@kali:~# nc uplink.ritsec.club 8001 | xxd
00000000: 0847 bfff 2040 80c2 2040 80c2 2040 80c2 .G.. @.. @.. @..
00000010: 2040 80c2 2040 80c2 2040 80c2 2040 80c2 @.. @.. @.. @..
00000020: 2040 80c2 2040 80c2 2040 80c2 2040 80c2 @.. @.. @.. @..
root@kali:~#
hex값을 통해 보니 처음 0847 bfff
이후는 동일하게 엔터입력에 대해 동일한 응답값 2040 80c2
로 응답 하는 것을 볼 수 있습니다.
제공해주는 PDF 문서를 보니 2진수를 가지고 처리를 하는 것으로 보입니다. 2진수로 받아서 확인해봅니다.
root@kali:~# nc uplink.ritsec.club 8001 | xxd -b -c 4
00000000: 00001000 01000111 10111111 11111111 .G..
00000004: 00100000 01000000 10000000 11000010 @..
00000008: 00100000 01000000 10000000 11000010 @..
0000000c: 00100000 01000000 10000000 11000010 @..
00000010: 00100000 01000000 10000000 11000010 @..
00000014: 00100000 01000000 10000000 11000010 @..
00000018: 00100000 01000000 10000000 11000010 @..
0000001c: 00100000 01000000 10000000 11000010 @..
00000020: 00100000 01000000 10000000 11000010 @..
00000024: 00100000 01000000 10000000 11000010 @..
00000028: 00100000 01000000 10000000 11000010 @..
0000002c: 00100000 01000000 10000000 11000010 @..
root@kali:~#
00001000 01000111 10111111 11111111
을 해석해보면 아래와 같이 해석이 되는 것을 볼 수 있습니다.
00001000 01000111 10111111 11111111
00aq???? 01?????? 10?????? 11??????
1000 000111 111111 111111
일단 채널 7bit
1000 000 == 10진수 64 == 8진수 0o100 == Heartbeat 채널
나머지 데이터
111 111111 111111 == 8진수 0x77777 == Heartbeat 채널 기본 데이터
이제 PDF에서 알려주는 방법을 통해 satellite의 이름을 알아내보도록 합니다.
00aq???? 01?????? 10?????? 11??????
00010000 01001000 10000000 11000000
\x10 \x48 \x80 \xc0
query bit를 1로 하고 채널을 name으로 한다음 나머지 데이터는 0으로 설정.
root@kali:~# python -c 'print "\x10\x48\x80\xc0"' | nc uplink.ritsec.club 8001 |xxd -b -c 4
00000000: 00001000 01000111 10111111 11111111 .G..
00000004: 00100000 01001000 10000000 11000000 H..
00000008: 00100000 01000000 10000000 11000010 @..
일단 패킷을 분석 해보면 첫번째는 Heatbeat 패킷이고 두번째가 name에 해당하는 채널 이지만 abort bit가 1이므로 system abort
상태 입니다. 그리고 마지막 TLE 패킷이고 abort bit가 1이므로 Invalid Size
입니다.
설명 | byte | byte | byte | byte |
---|---|---|---|---|
Signatures(S) 2bit*4 | SS?????? | SS?????? | SS?????? | SS?????? |
Abort siganls(A) 1bit | SSA????? | SS?????? | SS?????? | SS?????? |
Query bit(Q) 1bit | SSAQ???? | SS?????? | SS?????? | SS?????? |
Channels(C) 7bit | SSAQCCCC | SSCCC??? | SS?????? | SS?????? |
Data(D) 15bit | SSAQCCCC | SSCCCDDD | SSDDDDDD | SSDDDDDD |
위의 구조를 참고하여 Data에 해당하는 영역을 가져온다음 15bit이기 때문에 ascii로 변환한다면 ascii 7bit + dummy bit? 1bit + ascii 7bit
로 해서 문자열로 읽어 오면 됩니다. 하지만 현재 정상적으로 응답을 주지 않고 있기 때문에 여기 까지 분석 했습니다..... ㅠㅠ
참고 포인트
- PDF 문서
사라질 정도로참고.......... - xxd를 이용하여 hex,binary 형태로 응답 보기
'Write UP > RITSEC CTF 2019' 카테고리의 다른 글
RITSEC CTF 2019 - WriteUp - URGGGGG (2) | 2019.11.25 |
---|---|
RITSEC CTF 2019 - WriteUp - the_doge (0) | 2019.11.25 |
RITSEC CTF 2019 - WriteUp - Our First API (0) | 2019.11.25 |
RITSEC CTF 2019 - WriteUp - Onion Layer Encoding (0) | 2019.11.25 |
RITSEC CTF 2019 - WriteUp - Hop By Hop (0) | 2019.11.25 |
Comments