CanonEvent
题目功能
读入shellcode然后执行
启用了沙盒,规则如下
1 | line CODE JT JF K |
漏洞点
沙盒规则中规定当rip高位大于0x8000时直接ALLOW无视沙盒规则
而在syscall trace流程中,ptrace实际在seccomp检查之前
1 | static long syscall_trace_enter(struct pt_regs *regs, long syscall, |
利用流程
先fork一个子进程,子进程开始先int3中断使得主进程能在shellcraft.cat("./flag")前开始TRACE SYSCALL
主进程用PTRACE去TRACE子进程 SYSCALL,trace第一次触发在syscall入口时修改RIP至一个非法高位地址,即可 bypass seccomp检查进行一次系统调用
之后在执行完syscall后再次触发TRACE SYSCALL,此时将RIP设回合法值继续执行即可
exp
1 | #!usr/bin/env python3 |
VirtualInsanity (复盘)
题目功能
读入buf然后结束程序
漏洞点
_BYTE buf[32];然而读入0x50字节,导致oob写, 栈溢出
同时存在后门函数win
利用思路
由于没有任何泄露,且返回地址在libc,但栈高位有残留的程序代码段的地址。通过利用vsyscall可以滑动返回地址到程序代码段地址,部分写该地址为后门地址即可。
exp
1 | from pwn import * |