2021 蓝帽杯 pwn slient

本文详细介绍了2021蓝帽杯pwn类题目slient的解题过程,涉及seccomp沙箱的限制与绕过策略。在限制模式下,仅允许read、write和_exit等系统调用。在尝试orw绕过失败后,作者学习了利用cmp指令爆破flag的方法。文章提供了exp实现,但指出由于每次只能爆破少量flag字符,可能需要多次尝试。
摘要由CSDN通过智能技术生成

2021 蓝帽杯 pwn slient

这道题不是第一个上的pwn题,第一道太难了,第二个一出来就去看第二个题了= =

一个沙箱绕过的题,以前没写过类似的,当场也没有写出来,于是复现一下。

前置知识

seccomp概述

  • restrict模式:SECCOMP_SET_MODE_STRICT

    • 白名单:read,write,_exit,sigreturn
    • 除了已经打开的文件描述符和允许的系统调用,如果发起其他系统调用,内核会使用SIGKILL或SIGSYS终止进程
  • filter模式:SECCOMP_SET_MODE_FILTER

    • Seccomp-Berkley Packet Filter
    • 允许用户使用可配置的策略过滤系统调用
    • 使用BPF规则自定义测量

    BPF定义了一个伪机器,可以执行代码

    • 可对任意系统调用及其参数进行过滤
  • seccomp-bpf.h设置sandbox:使用该头文件,内置宏定义可直接设定白名单

  • prctl设置sandbox流程:

    定义filter数组 -> 定义prog参数 -> prctl(PR_SET_SECCOMP,SECCOMP_MODE_FILTER,&prog)

  • libseccomp设置sandbox

常见绕过思路:orw

wp

刚看这个题的时候,没觉得难,寒假写过一个类似的,就打算orw了,但是没想到write也被ban了TAT。后来看了学长的exp(嗯,我已经菜到面向exp打题了。。。),得知了一种通过cmp指令爆破flag的方法,此外这个题也没什么别的了,记录一下这个题的正确流程吧

  • 先例行检查,保护全开
  • 题目里一开始有mmap函数,同时加上随题有个.txt文件说了flag的位置,想到了orw
  • 检查一下seccomp规则,白名单只有read和open,(连openat,readv,writev这些都用不了。。)

在这里插入图片描述

所以只能按照上面说的思路写

exp:

from pwn import *

EXCV = context.binary = './chall'
e = ELF(EXCV
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值