일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 리눅스
- NewsClipping
- HackCTF
- 버퍼오버플로우
- 보안뉴스
- PWN
- RITSEC
- Linux
- 뉴스클리핑
- CodeEngn
- buffer over flow
- Hackerschool
- x64dbg
- 어셈블리어
- Python
- reversing
- RITSEC CTF 2019
- termux
- requests
- Shadow 동아리
- Nop Slide
- webhacking
- SQL Injection
- 웹해킹
- BOF
- ftz
- writeup
- 리버싱
- ctf
- Next.js
Archives
- Today
- Total
Jaeseo's Information Security Story
RITSEC CTF 2019 - WriteUp - URGGGGG 본문
URGGGGG
문제구분 | 난이도 | 작성자 |
---|---|---|
Forensics | 중 | JaeSeoKim |
문제 내용
문제 풀이
와이어 샤크로 분석을 해보면 무수히 많은 USB 시그널 패킷이 보입니다. USB keyboard에 대한 패킷으로 예상됩니다. 일단 tshark를 이용하여 usb.capdata만 추출합니다.
tshark -r URGGGGGG.pcapng -T fields -e usb.capdata > usb.txt
이제 추출된 usb.txt 파일을 가지고 python 스크립트를 짜봅니다.
keyboard_code = {
'01': '🌐🌐', #LCtrl
'02': '✅✅', #LShift
'04': 'aA',
'05': 'bB',
'06': 'cC',
'07': 'dD',
'08': 'eE',
'09': 'fF',
'0a': 'gG',
'0b': 'hH',
'0c': 'iI',
'0d': 'jJ',
'0e': 'kK',
'0f': 'lL',
'10': 'mM',
'11': 'nN',
'12': 'oO',
'13': 'pP',
'14': 'qQ',
'15': 'rR',
'16': 'sS',
'17': 'tT',
'18': 'uU',
'19': 'vV',
'1a': 'wW',
'1b': 'xX',
'1c': 'yY',
'1d': 'zZ',
'1e': '1!',
'1f': '2@',
'20': '3#',
'21': '4$',
'22': '5%',
'23': '6^',
'24': '7&',
'25': '8*',
'26': '9(',
'27': '0)',
'28': '\n\n',
'29': '⛔⛔', #esc
'2a': '💥💥', #BackSpace
'2b': '\t\t',
'2c': ' ',
'2d': '-_',
'2f': '[{',
'30': ']}',
'38': '/|',
'39': '🆎🆎', #CapsLock
'3a': '¹¹', #F1
'4c': '💢💢', #delete
'4f': '➡➡',
'50': '⬅⬅',
'51': '⬇⬇',
'52': '⬆⬆'
}
f = open("usb.txt","r")
lines = f.readlines()
f.close()
usb_data = list()
usb_data_tmp = ""
for i in lines:
if i != "00:00:00:00:00:00:00:00\n" and i != usb_data_tmp:
usb_data.append(i[:-1])
usb_data_tmp = i
for i in range(len(usb_data)):
print(usb_data[i])
flag = ""
x = 0
y = 0
copy_tmp = ""
for line in usb_data:
data = line.split(":")
if "01" in data[0]:
print("Ctrl!")
for i in range(0,8):
if "2a" == data[i]:
flag = flag[:-1]
elif "00" != data[i]:
flag += keyboard_code[data[i]][0:1]
elif "02" in data[0]:
print("Shift!")
for i in range(0,8):
if "2a" == data[i]:
flag = flag[:-1]
elif "00" != data[i]:
flag += keyboard_code[data[i]][1:2]
else:
print("just input!")
for i in range(2,8):
if "2a" == data[i]:
flag = flag[:-1]
elif "00" != data[i]:
flag += keyboard_code[data[i]][0:1]
print(flag)
결과물을 보고 flag를 추측합니다.
ablglddolglfikfj
jhf
a✅✅)✅✅(✅$✅&✅49✅✅(✅Y✅9¹afg
💢
✅✅R✅✅I✅✅T✅✅S✅✅E✅✅C✅⛔✅✅{✅w✅✅H✅0✅✅_✅s✅✅@✅⛔⬆⬅⬇⬅⬆⬅✅✅⬅✅🌐🌐xx⬇➡🌐🌐vvd✅✅_✅n⬆➡✅✅⬅✅🌐🌐c🌐⬇🌐🌐vtw0r✅k1n✅✅G✅✅_✅w✅✅A✅s
jlkgjkgfe⬆✅✅_✅t✅✅H✅3✅✅_✅o✅✅N✅l✅✅Y✅✅_✅p✅✅A✅ck3t✅✅_✅✅T✅y✅✅P✅3✅✅}✅⬇
akjilhflfskfefdgsdfcehjiuha
RITSEC{wH0_s@id_netw0rk1nG_wAs_tH3_oNlY_pAck3t_TyP3}
참고 포인트
- wireshark,tshark
- usb_keyboard_code
'Write UP > RITSEC CTF 2019' 카테고리의 다른 글
RITSEC CTF 2019 - WriteUp - Uplink (0) | 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