[CTF]对支付软件的漏洞利用buyflag

对支付软件的漏洞利用

考点

  • 安卓应用的简单逆向、反编译、patch、重打包
  • 对安卓应用的通信流量进行抓取和分析
  • XXE漏洞及其利用

思路

  1. 首先patch掉禁用注册的源码
  2. 通过git泄露获得服务端web源码
  3. 源码审计
  4. 通过xxe漏洞获得key
  5. 利用key伪造交易信息给自己充值

step1 获取到apk

首先我拿到了一款支付软件的安装包,我们先在模拟器中安装好这个软件,我们发现这里的注册按钮是无法使用的,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AT9YhtM2-1611804170771)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210128102108185.png)]

这时,我们要利用移动端逆向的知识,patch掉禁用注册按钮的的代码

工具:apktool
解包:apktool.bat d 文件命.apk 文件名
打包:apktool.bat b 文件名 文件命.apk
签名(必要)

if-nez vA, :cond_" 如果vA不等于0则跳转到:cond_

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6aSxdGos-1611804170773)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210127171857730.png)]

使用的三个软件都是免费的,下载地址Google一下也能轻易的搜到
apktool下载地址
dex2jar下载地址
jd-gui下载地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g11ZTO9e-1611804170776)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210127172156139.png)]

重新打包后,我们在模拟器中安装好这个apk程序,运行他。

step2 了解程序,并下载web服务源码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aEctrtza-1611804170779)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210128102607408.png)]

一共是4个按钮,不同的按钮是有不同的用处,我们也了解到整个程序的使用是基于web服务的,根据上级给的IP地址,我们使用漏扫工具对其进行扫描,发现其存在git源码泄露漏洞,利用漏洞我们下载源码,一共是4个php页面。

step3 代码审计

因为平时一直从事re的题目,所以我将代码审计理解为逆向中的静态分析,简单的来说就是检查源代码中的安全缺陷,是否存在安全隐患。git源码泄露的php页面分别是:api.php,key.php,notify.php.index.php.

通过代码审计我们发现了,其中的核心代码是在notify.php,整个程序的流程是,充值,钱够数,买flag,而notify.php中就是充值的过程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9pa42abM-1611804170781)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210128103537644.png)]

这里,我们看到了充值成功的信息,我们再向上看充值成功的条件是sign值为5个字符串拼接后md5加密。

step4 获取信息

appid是通过阅读可以得到的,“wx”

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zg9Jo990-1611804170782)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210128103826987.png)]

deposit的信息获取位于api.php中,显示的flag价格是9999999999

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q3iSogeB-1611804170783)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210128103856178.png)]

nonce_str是通过openssl函数计算,返回值为1
在这里插入图片描述
session_id是登录时,返回包中的信息,每次登录的时候都会改变
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IGEOVxPv-1611804170784)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210128104642594.png)]

sign值是通过计算得来的,脚本如下

<?php 

$key="668f4f4db2ac706137639bfc3ca70fe1";
$appid='wx';
$deposit="19999999999";
$nonce_str="1";
$session_id="9ang9ja5l7o7paicmi4j49q6ke";
$aa=$appid.$deposit.$nonce_str.$session_id.$key;

//echo $aa;
echo md5($aa);

?>

step5 xxe漏洞利用

libxml_disable_entity_loader(false)//为ture,则表示禁用外部实体

开启burp的拦截功能,然后访问该IP地址,当访问请求被burp拦截后,讲如下的XML文本直接卸载数据包内容的下面

<?xml version="1.0" encoding="ISO-8859-1"?> <xml> <appid>wx</appid> <deposit>19999999999</deposit> <nonce_str>1</nonce_str> <session_id>njorlgicrcr9j21bqp1n5f1jou</session_id> <sign>3cf7d98cac07de65bbc94d4f18c4798c</sign> </xml>

(对应XML中的标签)

将XML内容发送给服务器,服务器讲XML解析完成后,就会依照解析的内容工作,这段XML中的内容就被应用到了目标服务器下(192.168.32.187),服务器解析XML内容后,会将这一文件内容存入&xxe中,然后将数据返回给恶意访问者。

下面一些图片就是步骤的演示:

刚刚登陆后的界面如图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lDWvVIwM-1611804170785)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210128110556099.png)]

在burp中开启拦截,点击充值,出现界面如下图,session_id出现了,之后我们利用脚本求出sign值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BF7gOxa6-1611804170786)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210128110817012.png)]

再点击充值,这个时候我们要将拦截的信息进行修改了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQ17JPwM-1611804170786)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210128112139413.png)]

关闭拦截,我们的余额发生了变化,这个时候就可以购买flag了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NLncLxoz-1611804170787)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210128112102174.png)]
整个题目的过程就是这样,希望大家可以有所收获

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏华李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值