前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[CTF]对支付软件的漏洞利用buyflag

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

作者头像
李鹏华
发布2024-03-12 14:35:56
760
发布2024-03-12 14:35:56
举报
文章被收录于专栏:网络信息安全网络信息安全

对支付软件的漏洞利用

考点

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

思路

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

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

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

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

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

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

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

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

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

step3 代码审计

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

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

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

step4 获取信息

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

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

nonce_str是通过openssl函数计算,返回值为1

session_id是登录时,返回包中的信息,每次登录的时候都会改变

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

代码语言:javascript
复制
<?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中,然后将数据返回给恶意访问者。

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

刚刚登陆后的界面如图

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

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

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

整个题目的过程就是这样,希望大家可以有所收获

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 对支付软件的漏洞利用
    • step1 获取到apk
      • step2 了解程序,并下载web服务源码
        • step3 代码审计
          • step4 获取信息
            • step5 xxe漏洞利用
            相关产品与服务
            代码审计
            代码审计(Code Audit,CA)提供通过自动化分析工具和人工审查的组合审计方式,对程序源代码逐条进行检查、分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。支持脚本类语言源码以及有内存控制类源码。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档