CTF——一次源码审计【O泡易支付】

本文介绍了参与CTF比赛时,通过源码审计发现的反序列化漏洞。作者首先对比原始文件找出修改点,然后详细阐述了如何利用PayNotifyCallBack类的NotifyProcess方法,以及如何构造Payload触发系统调用来实现目标。文章中还讲解了如何利用php序列化特性构造攻击字符串,最终成功getshell。
摘要由CSDN通过智能技术生成

首先是得到了支付系统的源码,第一步使用扫描工具进行扫描,没有发现简单的漏洞,决定从网上寻找源码,对比原始文件的方式,查看出题者具体改了哪些代码。

PS:总不可能让我们挖0day吧。

下载链接,0币下载(工具除外)

题目下载
源码下载
工具下载

使用 Beyound Compare 进行文件对比(52上有pj),很快发现了几处修改

在这里插入图片描述

第1处

// /includes/cron/cron.php
# 新增
function filter_($str) {
   
    return str_replace("cxyu", "ccxyu", $str);
}
...
# 新增
$data['userdata'] = $_POST['userdata'];
...
# 利用点
$serial_str = filter_(serialize($data));

第2处

// /admin/index.php
# 新增
include("../submit/wxpay/wxpay_notify.php");
...
# 利用点
$data=unserialize(file_get_contents(SYSTEM_ROOT.'db.txt'));

第3处

// /submit/wxpay/wxpay_notify.php
class PayNotifyCallBack extends WxPayNotify
{
   
...
	public function NotifyProcess($data, &$msg)
	{
   
		//file_put_contents('log.txt',"call back:" . json_encode($data));
		$notfiyOutput = array(
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值