M4ndU
1. Easy Teabo
action_list.txt를 참고하여 예시처럼 출력되도록 코드를 짜서 돌리면 된다.
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 32 33 | from pwn import * def teabo(a): a = a.replace('left_jab', '@==(^0^)@') a = a.replace('left_mid_jab', '@=(^0^)@') a = a.replace('right_mid_jab', '@(^0^)=@') a = a.replace('right_jab', '@(^0^)==@') a = a.replace('left_hook', '@(^0^)@==') a = a.replace('right_hook', '==@(^0^)@') a = a.replace('left_speedball', '@@@(^0^)') a = a.replace('right_speedball', '(^0^)@@@') a = a.replace('left_kick', '@||(^0^)==@') a = a.replace('mid_kick', '@==(^||^)==@') a = a.replace('right_kick', '@==(^0^)||@') a = a.replace('mid_jab', '@(^0^)@') a = a.replace('+ ', '') a = a.replace(' >>', '') a = a.replace('\n', '') print(a) return a p = remote("server.trustctf.com", 44923) p.recvuntil('Taebo 1 : ') order = p.recvline() p.sendline(teabo(order)) for i in range(0, 99): print(p.recvuntil(': ')) order = p.recvline() p.sendline(teabo(order)) p.interactive() | cs |
flag : 1 TRUST{w0w_y0u_9o7_4_w0nd3rfu1_b0dy_lik3_m3}
2. IDENTITY_5
apk파일이 주어진다. zip으로 확장자명을 바꿔주고 classes.dex를 추출해서 dex2jar을 이용해 디컴파일을 했다. 그 다음 gui을 이용해 코드를 봤다.
mainactivity에서 링크를 찾을 수 있다. 2번째 플래그 조각, qr코드를 스캔하면 문자열이 나온다.
secondhacking에서 4번째 플래그 조각 qr코드 링크를 찾을 수 있다.
flag : TRUST{Th1s_1s_fl@g_@ndr0id_@dd_Qrc0d3}
3. Starcraft2
스타크래프트 2 맵파일로 보이는 파일이 주어진다.
배틀넷 런처에서 스타크래프트 2 편집기를 실행하고
편집기로 해당 파일을 열면 플래그를 얻을 수 있다.
flag : TRUST{FUN}
4. MESS
실행해보면 주어진 문자열의 복호화된 값을 입력해주면 플래그가 나올 것 같음을 알 수 있다.
올리디버거로 열어서 참조된 문자열을 확인해보면, 정상적인 문자열이 있다.
실행을 하면 이 값이 암호화되어 출력된다.
암호화되기 전 문자열을 입력해주면 플래그가 나온다.
Flag : TRUST{bBR\t>UHD?5wQ}
5. Archiver
main.py에서 saveArchive함수를 보면,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | def saveArchive(): url = request.form['url'] T = int(time.time()) try: res = requests.get(url) except: return util.alert("Error!") if res.status_code != 200: return util.alert("code is not 200") data = unicode(res.text) hashed = util.hashing(url) os.system("mkdir %s/%s" % (app.config['path'], hashed)) fd = open('%s/%s/%s' % (app.config['path'], hashed, str(T)), 'w') fd.write(data) fd.close() return redirect(url_for('main')) | cs |
url과 T(시간) 값을 받아서 해당 페이지의 내용을 읽어서 아래 경로에 저장해둔다.
/tmp/[random_string]/[url_hashed]/[T]
이때 url은 해시값으로 들어가며, T는 그대로 들어간다.
viewArchive 함수를 보면,
1 2 3 4 5 6 7 8 9 | def viewArchive(): url = request.form['url'] T = request.form['T'] hashed = util.hashing(url) fd = open('%s/%s/%s' % (app.config['path'], hashed, str(T)), 'r') data = unicode(fd.read()) fd.close() return render_template('view.html', data=data) | cs |
url과 T값을 받아 해당 경로에 있는 파일의 내용을 읽어서 출력해준다. 여기서 T값을 이용해 flag를 읽도록 하면 된다.
파일을 하나 저장해두고, burp suite를 이용해 T값을 ../../../flag로 조작해주면
파일 경로가 /tmp/[random_string]/[url_hashed]/../../../flag가 되고 main.py가 /flag을 읽어오게 된다.
flag : TRUST{Easy_Local_file_traversal_N3xt_t1me_i_1l_us3_DB..:(}
번외 - 아쉽게 못 푼 문제.
RSA1
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 32 | from time import time def powermod3(a, b, n): r = 1 while b > 0: if b & 1 == 1: r = r * a % n b /= 2 a = a * a % n return r def powermod4(a, b, n): if b == 1: return a % n r = powermod4(a, b / 2, n) r = r * r % n if (b & 1) == 1: r = r * a % n return r a = 1649729212658550722856763813613372 b = 1275312736838027047985273062147003 c = 1695538043948767252952277333354653 starttime = time() print powermod3(a, b, c) print time() - starttime starttime = time() print powermod4(a, b, c) print time() - starttime | cs |
(시간함수 빼도 된다.)
나온 값을 두자리씩 끊어서 ascii로 바꿔주면 된다.
복호화값이라길레 그냥 정수값으로 넣어서 인증 못한...
--추가 RSA2
문제 :
암호화키 e : 34873453193
두 소수의 곱 N : 443961743055319980564015263729
암호문 c : 기록 안해두어서 모릅니다...
N을 소인수분해. https://www.wolframalpha.com/input/?i=factorize+443961743055319980564015263729
rsatool.py 이용해(python rsatool.py -p 657862726787803 -q 674854684689443 -e 34873453193) d를 구해준뒤 rsa1에서 사용한 코드를 이용해 복호화 한 뒤, ascii 돌리면 된다.
'CTF Write Up' 카테고리의 다른 글
CODEGATE 코드게이트 2019 뉴비 해킹대회 OPEN CTF & 부스 문제풀이 Write up 롸업 (0) | 2019.03.28 |
---|---|
TAMU CTF 2019 wirte up (0) | 2019.03.04 |
NeverLAN CTF 2019 write up (0) | 2019.02.04 |
2019 NEWSECU CTF Write-Up (0) | 2019.02.04 |
YISF 2018 예선 write-up (0) | 2018.08.15 |