[php审计实战篇]BlueCms v1.6 Union注入

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

本文作者:Aedoo

来源:i春秋社区

0×01 代码跟踪

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

包含了php文件:/include/common.inc.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,无论是数组还是字符串,使用addslashes()进行过滤。

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

0×02 注入分析

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

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

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

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

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

这次确定,对传入的ad_id只判断了是否为空,去除了前后的空格,此外也就多了一个全局的addslashes()转义了一下特殊字符,直接进行了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([email protected]_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文件:

$ad_content输出查询信息。

输出形式:

<!–

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

–>

 

0×03 构造Payload

正常的SQL查询语句为:

select * from blue_ad where ad_id=1

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

看一下数据库结构:

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

执行后查看源码:

 

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

回到文下载工具

时间: 2024-08-29 15:51:37

[php审计实战篇]BlueCms v1.6 Union注入的相关文章

MySQL的初次见面礼基础实战篇

[版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/61614366 出自[zejian的博客] 本篇将以最简单的方式呈现并演绎mysql数据库的必知必会的知识点,通过本篇博文您将会对mysql从起点到终点的较为全面的认识,关于mysql的知识,将分两篇来记录,即MySQL的基础实战篇和MySQL的进阶实战篇,以下是本篇的主要知识点. 基础实战篇 环境准备 数据库与表的创建以及SQL增

《黑客攻防技术宝典Web实战篇》.Dafydd.Stuttard.第2版中文高清版pdf

下载地址:网盘下载 内容简介 编辑 <黑客攻防技术宝典(Web实战篇第2版)>从介绍当前Web应用程序安全概况开始,重点讨论渗透测试时使用的详细步骤和技巧,最后总结书中涵盖的主题.每章后还附有习题,便于读者巩固所学内容. <黑客攻防技术宝典(Web实战篇第2版)>适合各层次计算机安全人士和Web开发与管理领域的技术人员阅读.本书由斯图塔德.平托著. 目录 编辑 第1章 Web应用程序安全与风险 1.1 Web应用程序的发展历程 [1] 1.1.1 Web应用程序的常见功能 1.1.

caffe框架下目标检测——faster-rcnn实战篇操作

原有模型 1.下载fasrer-rcnn源代码并安装 git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git 1)  经常断的话,可以采取两步: git clone https://github.com/rbgirshick/py-faster-rcnn.git 2)  到py-faster-rcnn中,继续下载caffe-faster-rcnn,采取后台跑: git submodule update --in

《nodejs+gulp+webpack基础实战篇》课程笔记(四)-- 实战演练

一.用gulp 构建前端页面(1)---静态构建 npm install gulp-template --save-dev 通过这个插件,我们可以像写后台模板(譬如PHP)一样写前端页面.我们首先学习一下写法. 现在我们创建一个新任务:创建一个裸的index.html文件,然后在body里面写上 ,我的年龄是:<%= age %> 下载好gulp-template,我们引用并配置 var gulp_tpl = require("gulp-template"); gp.tas

XenApp_XenDesktop_7.6实战篇之十九:安装、升级和配置StoreFront 3.0

CitrixXenDesktop7.6 Feature Pack 2中发布了StoreFront 3.0,本章节为大家分享如何全新部署.升级和配置StoreFront 3.0.默认XenDesktop 7.6光盘自带的StoreFront版本为2.6.0.5031.注意升级和全新部署StoreFront 3.0使用的安装程序是一致的. 1.  全新部署StoreFront 3.0 1.1   将CTXSF01服务器加入域,并使用具备本地管理员权限的域账户进行登录 1.2   运行StoreFro

2天驾驭DIV+CSS (实战篇)(转)

这是去年看到的一片文章,感觉在我的学习中,有不少的影响.于是把它分享给想很快了解css的兄弟们.本文是实战篇. 基础篇[知识一] “DIV+CSS” 的叫法是不准确的[知识二] “DIV+CSS” 将你引入两大误区[知识三] 什么是W3C标准?[基础一] CSS如何控制页面[基础二] CSS选择器[基础三] CSS选择器命名及常用命名[基础四] 盒子模型[基础五] 块状元素和内联元素 实战篇[第一课] 实战小热身[第二课] 浮动[第三课] 清除浮动[第四课] 导航条(上) | 导航条(下)[大练

Java 基础:认识&理解关键字 native 实战篇

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 泥瓦匠初次遇见 navicat 是在 java.lang.Object 源码中的一个hashCode方法: 1 public native int hashCode(); 为什么有个navicat呢?这是我所要学习的地方.所以今天泥瓦匠想要总结下navicat. 一.认识 native 即 JNI,Java Native Interface 凡是一种语言,都希望是纯.比如解决某一个方案都喜欢就单单这

漫游kafka实战篇之搭建Kafka开发环境

转载注明出处:http://blog.csdn.net/honglei915/article/details/37563647 上篇文章中我们搭建了kafka的服务器,并可以使用Kafka的命令行工具创建topic,发送和接收消息.下面我们来搭建kafka的开发环境. 添加依赖 搭建开发环境需要引入kafka的jar包,一种方式是将Kafka安装包中lib下的jar包加入到项目的classpath中,这种比较简单了.不过我们使用另一种更加流行的方式:使用maven管理jar包依赖. 创建好mav

Systemd 入门教程:实战篇

Systemd 入门教程:实战篇 上一篇文章,介绍了 Systemd 的主要命令,这篇文章主要介绍如何使用 Systemd 来管理我们的服务,以及各项的含义: 一.开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件,如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例). $ sudo systemctl enable httpd 上面的命令相当于在/etc/systemd/system目