usdt手机钱包(www.payusdt.vip):记一次对Tp二开的源码审计(Php审计)

admin/2021-05-08/ 分类:淮北科技/阅读:

USDT自动API接口

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

  • 概述
    一款某票据Tp二开平台,开发者嚷嚷着要找人审计一下源码,说有预算,洞审出来之后人就没了,感受审都审了,不做点什么不是虚耗时间了,于是就发出来顺便讲一下在Tp二开情形下若何对源码举行审计,一样平常在拿到Tp二开的源码,首先要做的事,确认系统版本,然后行使搜索引擎寻找当前框架版本的破绽,这次拿得手之后在确认下是Tp3.2.3的系统,其次就是查看TP的路由是默认照样说更改了,然后找到web类,对类中的代码一行一行的仔细审计,Tp3.2.3爆出的破绽挺多的,连系先进的种种履历,乐成寻找到了开发中的雷区,这里直接贴代码。

  • 随便文件包罗代码执行
    在ApplicationHomeControllerVueController.class.php下,可以看到这里是这样写的。

    然则在TP3.2.3中,这是个大问题,由于display方式会直接包罗这个变量中的文件,而且在Controller.class.php中的_Call类界说了若是存在_empty方式,就会优先挪用,这里methed_name就是a方式类的传值,然则若是我们另挪用的a类直接为我们要包罗的文件的绝对路径,那么就会直接包罗掉我们所给的文件。

    这里贴出详情破绽代码

    public function _empty($methed_name){  $this->display($methed_name);  exit(0);  } 

    我们这里可以看到,当把A设置为日志的绝对路径时,会直接包罗掉这个日志,从而造成随便代码执行。

  • Sql注入
    在ApplicationApiControllerAreaController.class.php下,先铺上代码。

    这里没有使用I方式,而是直接通过$_REQUEST['pid']去取得Pid的值,我们这里可以组织Exp表达式用于Where条件,然后对代码举行注入,也不知道是不是留的后门,前面都写了I,就这里非要用$_REQUEST['pid']去接受参数,组织pid[0]=exp&pid[1]= and updatexml(1,concat(0x7e,(select user())),0)可以看到乐成爆出来了用户名。

    ,

    FiLeCoin交易所

    FiLeCoin交易所官网(www.ipfs8.vip)是FiLeCoin致力服务于使用FiLeCoin存储和检索数据的官方权威平台。IPFS官网实时更新FiLeCoin(FIL)行情、当前FiLeCoin(FIL)矿池、FiLeCoin(FIL)收益数据、各类FiLeCoin(FIL)矿机出售信息。并开放FiLeCoin(FIL)交易所、IPFS云矿机、IPFS矿机出售、租用、招商等业务。

    ,
    public function ajax() {  $pid = $_REQUEST['pid'];  $list = D('Area')->where(array('pid'=>$pid))->select();  $html = '';  foreach( $list as $k=>$v ) {  $html .= '<option value="'.$v["area_id"].'">'.$v["title"].'</option>';  }  echo $html;  } 
  • Session操控
    在ApplicationApiControllerCodePayController.class.php中,就更离谱了,铺上代码。

    这里的$key,$value值都是经由$_REQUEST传参进来的,也就是说,我们可以随便的对Session举行操控,连系判断的Check_login来看,发现只是判断Session内里是否存在值。
    ```php
    public function setsession()
    {

    $key = (isset($_REQUEST['key']) && !empty($_REQUEST['key']) ) ? $_REQUEST['key'] : ''; $value = (isset($_REQUEST['value']) && !empty($_REQUEST['value']) ) ? $_REQUEST['value'] : ''; session($key,$value);

    }

```php function check_login(){ if (!empty($_SESSION['user']['id'])){ return true; }else{ return false; } }

另有这里写入的,我们就可以自己组织出响应的变量,从而到达未授权登录的目的。

  • 番外
    其着实TP3.2.3中,另有一种情形,可以直接挪用Dispaly。

    当ThinkPHPLibraryThinkController.class.php中的Display为Public的情形下(默以为Protected),可以早年台控制器中直接挪用Display造成执行随便代码,固然一样平常情形下遇不到,不外若是当一个后门照样挺好用的。

    protected function display($templateFile='',$charset='',$contentType='',$content='',$prefix='') {  $this->view->display($templateFile,$charset,$contentType,$content,$prefix);  } 
  • 总结
    若是遇到TP二开的系统,确认版本,找到控制类,连系先进们的履历,站在巨人肩膀上对其举行审计,要是类中的代码没问题,我建议实验寻找Tp的0day(似乎某个大佬手上有Tp3.2.3的代码执行)。

阅读:
广告 330*360
广告 330*360
淮北新闻网
微信二维码扫一扫
关注微信公众号
新闻自媒体 Copyright © 2002-2019 淮北新闻网 版权所有
二维码
意见反馈 二维码