博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[php审计实战篇]BlueCms v1.6 Union注入
阅读量:6388 次
发布时间:2019-06-23

本文共 1594 字,大约阅读时间需要 5 分钟。

非常基础的代码审计练习,适合有php基础的审计新手练习

0×01 代码跟踪

首先,进入首页代码 :index.php

包含了php文件:

跟踪这个php文件,这些文件都是包含的全局文件。

这个php文件还是先包含了几个全局文件。

最主要的是上图最下方的if判断:

if(!get_magic_quotes_gpc())

{

   $_POST = deep_addslashes($_POST);

   $_GET = deep_addslashes($_GET);

   $_COOKIES = deep_addslashes($_COOKIES);

   $_REQUEST = deep_addslashes($_REQUEST);

}

如果未开启magic_quotes_gpc,则对以各种请求的数据使用deep_addslashes()进行过滤,跟踪一下这个函数:

对传入的的$str,无论是数组还是字符串,使用进行过滤。

PS:的情况下,如果输入的数据有,单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被加上反斜线。这些转义是必须的,如果这个选项为off,那么我们就必须调用addslashes这个函数来为字符串增加转义。

0×02 注入分析

在phpstorm使用CTRL+SHIFT+F全局搜索:$_GET

寻找以GET方式传入的参数:

使用红框圈起来的这条有异常。

ad_id明显是文章或者广告的id,并没有使用intval强制转化为整数型而是使用了trim()函数来去除了前后的空格,有点看不懂。

此时还不能完全确定存在注入,跟踪到这行代码看一下:

这次确定,对传入的ad_id只判断了是否为空,去除了前后的空格,此外也就多了一个全局的转义了一下特殊字符,直接进行了SQL查询。

将SQL语句传入了getone()函数,很明显getone是进行SQL查询的函数,跟进。

getone()函数:

function getone($sql, $type=MYSQL_ASSOC){

   $query = $this->query($sql,$this->linkid);

   $row = mysql_fetch_array($query, $type);

   return $row;

}

query()函数:

function query($sql){

    if(!$query=@mysql_query($sql, $this->linkid)){

        $this->dbshow("Query error:$sql");

    }else{

        return $query;

    }

}

  

第一个if,如果执行发生错误,将错误信息"Query errorsql"传入dbshow()函数。

dbshow()函数:

function dbshow($msg){

    if($msg){

        echo &quot;Error:&quot;.$msg.&quot;<br><br>&quot;;

    }else{

        echo &quot;Errno:&quot;.$this->errno().&quot;<br>Error:&quot;.$this->error();

    }

    exit;

}

作用是输出错误信息。

之后回到ad_js.php文件:

输出查询信息。

输出形式:

<!–

document.write(&quot;test&quot;);

–>

 

0×03 构造Payload

正常的SQL查询语句为:

select * from blue_ad where ad_id=1

因为直接回显查询内容,所以直接union注入咯。

看一下数据库结构:

我们需要的数据列名为admin_name和pwd,构造PayLoad:

执行后查看源码:

 

0×04 源码下载及工具说明

 

转载地址:http://yudha.baihongyu.com/

你可能感兴趣的文章
远程SSH连接服务与基本排错
查看>>
Objective-C学习笔记(十九)——对象方法和类方法的相互调用
查看>>
win10 WmiPrvSE.exe WMI Provider 占用CPU过高的问题
查看>>
hdu 4945 2048(DP)
查看>>
论文阅读:CNN-RNN: A Unified Framework for Multi-label Image Classification
查看>>
开篇有益-解析微软微服务架构eShopOnContainers(一)
查看>>
IE新发现
查看>>
quick check
查看>>
游戏人生(一),我的lua之旅:那些坑爹的CCBReaderLoad
查看>>
Debug时含有的子元素,在代码里获取不到的问题
查看>>
UVA 11020 - Efficient Solutions(set)
查看>>
RStudio版本号管理 整合Git
查看>>
使用 PHPMailer 发送邮件
查看>>
IDEA 2017 安装后 关联SVN
查看>>
文件系统管理 之 Linux 创建文件系统及挂载文件系统流程详解
查看>>
CSS选择器学习小结
查看>>
什么叫贸工技发展模式?什么叫技工贸发展模式?
查看>>
MyEclipse for Spring 10.0: GWT 2.1 and Spring Scaffolding
查看>>
水木-搜索引擎技术版
查看>>
yiStack平台维护
查看>>