@1kbfree
2018-07-10T10:36:44.000000Z
字数 1799
阅读 1305
PHP
这是一个GITHUB
上找到的一个使用原生PHP
代码写的一个博客,地址是:https://github.com/qinshuang1998/Tiger-Blog
,但是这里有很多功能没有实现(这个作者是不是比我还懒,,,哈哈哈),然后我分析的话只是想让大家明白一下这些功能是如何实现的,还有如果有漏洞的话我也会写出来(因为我是边读边写,然后自己分析一下,但是因为我水平也不是很厉害,所以有很多漏洞也没看出来还请大佬们多多指教),对我们的代码审计有很大的帮助,不多说啦,
这里说明一下,我分析的时候,只会写注释,或者截屏然后在旁边标注一下,因为我觉得这样会比较高效一点,所以你们可以下载这个源代码,然后按照我分析的然后再自己看一下,大概也就能明白功能实现原理了,祝你学习愉快。
这个是首页文件( 废话,我也知道 )~
require('./inc/conn.php'); // 连接数据库
require('./inc/func.php'); // 引入函数文件(一般都是封装了常用的函数,方便调用)
这个不必多说。
$url = $_SERVER['REQUEST_URI']; //这个功能我也不知道是干嘛的,我们来输出一下。
var_dump( $url );die; //输出一下$url,并且不然他执行下面的代码
这个是用于输出除了域名外的路径。
$url = parse_url($url); // parse_url将路径放在了数组的path,将?后面的参数放在了数组的query
var_dump( $url );die; // 如果上面字体描述的不懂我们再来打印一下。
var_dump( $num );die;
这里为什么是5呢?我也好奇,然后我来到数据库看了一下。
这个5就是article
表的数量
if(@$_GET['page']){
// 把个个参数都打印一下。
$pageval=$_GET['page'];
echo( '$pageval -> '.$pageval ."<br />");
$page=($pageval-1)*$pagesize;
echo( '$page -> '.$page ."<br />");
$page.=',';
echo( '$page -> '.$page ."<br />");die;
}
看不明白看下去先
然后下面的就基本上是简单的SQL
语句了,不讲解了,开始另一个文件
先讲解后台功能的实现。
在
xxx/admin/login.php
打开后发现只有一句代码:
<?php
require('./page/login.html'); // 包含当前的page文件夹里的login.html文件
打开后就是一些前端登陆的表单以及一些样式,然后他是将登陆的数据提交到confirm.php
文件,如图:
表单之类的html
代码不多讲,这里来分析一下js代码(这里有一个问授权访问漏洞,可以不输入密码直接登陆):
然后我们来尝试登陆一下,查看result
都会返回什么~
表示登陆成功
表示登陆失败
我们身为白帽子,就是用来打破这些规矩的,输入错误密码的时候我们来抓包获取返回结果并且将result
修改为success
~
成功绕过
接下来讲解一下confirm.php
文件是如何接受数据的。
上面的$result
使用了GetALL
函数,我们来看一下他的代码。
function GetAll($query) {
while($tmp = mysql_fetch_array($query)){
$result[] = $tmp;
}
return @$result;
}
查询$query
这个sql
语句执行后的数据然后循环赋值到$result
数组里。
这里的不多将了,具体有注释了,下面没注释的就是一些登陆操作的(我也看不懂)
登陆页面分析完了,来分析一下首页页面。
page文件夹里面的都是html
文件,也就是展示页面效果的,就不多讲解了。
这个文件是后台发布文章的
这里是存在Csrf
漏洞的,而且也没有过滤Xss
漏洞,所以是存在Xsrf
的,但是因为这里他完成了插入功能,但是没有完成展示插入的数据的功能,所以没办法继续讲解了,等作者把功能实现了我再来具体分析。