非常基础的代码审计练习,适合有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(!$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文件:

$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 源码下载及工具说明

回到文下载工具

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

  1. [php代码审计]bluecms v1.6 sp1

    一.环境搭建 bluecms v1.6 sp1源码 windows 7 phpstudy2016(php 5.4.45) seay源代码审计系统 源码在网上很容易下载,很多教程说访问地址 http:/ ...

  2. 代码审计入门之BlueCMS v1.6 sp1

    0x00 前言 作为一名代码审计的新手,网上的大佬们说代码审计入门的话BlueCMS比较好,所以我就拿BlueCMS练练.(本人实在是一枚新手,请大佬们多多赐教) 0x01 环境准备 Phpstudy ...

  3. 运维监控-Open-Falcon安装Agent实战篇

    运维监控-Open-Falcon安装Agent实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文参考链接来自:http://book.open-falcon.org/zh/ ...

  4. Ceres Solver: 高效的非线性优化库(二)实战篇

    Ceres Solver: 高效的非线性优化库(二)实战篇 接上篇: Ceres Solver: 高效的非线性优化库(一) 如何求导 Ceres Solver提供了一种自动求导的方案,上一篇我们已经看 ...

  5. SAS数据挖掘实战篇【四】

    SAS数据挖掘实战篇[四] 今天主要是介绍一下SAS的聚类案例,希望大家都动手做一遍,很多问题只有在亲自动手的过程中才会有发现有收获有心得. 1 聚类分析介绍 1.1 基本概念 聚类就是一种寻找数据之 ...

  6. 掌握SpringBoot-2.3的容器探针:实战篇

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:原创文章分类汇总,及配套源码,涉及Java.Docker.K8S.DevOPS等 经过多篇知识 ...

  7. 二、Redis基本操作——String(实战篇)

    小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...

  8. AngularJS in Action读书笔记6(实战篇)——bug hunting

    这一系列文章感觉写的不好,思维跨度很大,原本是由于与<Angularjs in action>有种相见恨晚而激发要写点读后感之类的文章,但是在翻译或是阐述的时候还是会心有余而力不足,零零总 ...

  9. ROS2.9.27架设网吧软路由实战篇之端口映射与回流

    转载:http://blog.csdn.net/zm2714/article/details/7924280 上一篇:ROS2.9.27架设网吧软路由实战篇之连通网络,主要讲述了网吧架设软路由ROS2 ...

随机推荐

  1. kafka启动报java.net.UnknownHostException

    kafka启动报java.net.UnknownHostException 参考资料: 1.https://blog.csdn.net/zdxiq000/article/details/6258765 ...

  2. web和wap网站的区别 (转)

    WAP的全称是“无线应用协议(Wireless Application Protocol)”,是一种向移动终端提供互联网内容和先进增值服务的全球统一的开放式协议标准, 是简化了的无线Internet ...

  3. Matlab界面清洗

    保持干净清爽的编程界面可以给人以简洁明朗的享受,Matlab可以对涉及到的4个界面进行清洗: ①  Clear Figure ; ② Clear Command window; ③ Clear Wor ...

  4. 寄存器CPU存储地址信息和数据信息的地方 CPU通过地址寄存器区分指令和数据

  5. tar、tgz、gz文件批量解压方法

    我是用for i in $(ls *.tgz);do tar xvf $i;done 批量解压的tgz文件的我是用for i in $(ls *.gz);do gzip -d $i;done批量解压的 ...

  6. 系统批量运维管理器paramiko详解

    一.paramiko介绍 paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方式.可以实现远程命令执行.文件传输.中间SSH代理等功能,相对于Pexpect,封装的层次更高, ...

  7. 二叉树中和为某一值的路径 (java)

    问题描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 题解 import java.util.Arra ...

  8. MongoHelper

    /* @@decription mongodbHelper @@version 1.0 @@author think_fish&&dachie @@copyright think_fi ...

  9. Eclipse下初用lucene

    lucene是apache的一个开源项目,一个开放源代码的全文检索引擎工具包. 1. 首先下载lucene,下载地址来自<lucene实战>第2版(页面加载比较忙,等~) http://w ...

  10. Yii2 upload

    http://webtips.krajee.com/advanced-upload-using-yii2-fileinput-widget/ http://webtips.krajee.com/upl ...