沙箱,用来控制shellcode的。在函数中会有sandbox函数。
我们用Newstar的一个题为例子讲解。
如何查看沙箱
检测工具seccomp-tools
安装:
sudo apt install gcc ruby-dev
sudo gem install seccomp-tools
使用:
seccomp-tools dump ./pwn

这样可以看到我们被禁止使用的函数有3个:sendfile、execve、exeveat
题目例子
1 | ┌──(kali㉿Alex-KaliServer)-[/mnt/c/Users/Lenovo/Downloads] |
直接看系统调用表找到对应的函数(本人为了方便,已经手动添加)
我们可以看到我们被禁用了execve 和 execveat
所以我们只能使用ORW(open read write)来得到 flag
同时,程序也禁用了常规的 open read write,需要我们找到他们的替代品
- 对于
open,我们可以选择使用openat或者openat2(本题已禁用) - 对于
read,我们可以选择使用readv、preadv、preadv2(本题可用),pread64或者mmap(本题可用) - 对于
write,我们可以选择使用writev(本题可用),sendfile(本题可用,且能省略read)等
关于orw:Seccomp学习(2) | D0wnBe@t
本处使用了原题解的函数openat和sendfile
如果你需要运行成功的回应,请使用root用户在根目录新建flag文件,写入一个伪造的flag即可。(大概率你以后也会用的上。)
说些什么吧!