bluecms&&willblog小程序,php代码审计入门练习--by-pursu0

1.这是一个极简的blog程序,搭建好环境,可以看到有登陆操作。我准备直接先从这里审


上图是index文件,可以看到连接了两个文件,conf是配置文件,所以找到class.php


找到登陆操作的代码,通过post直接获取用户名和密码与数据库中的数据对比,若相等则登陆成功,不存在sql注入,密码用了md5加密保存。但实际上只需要值相等就能进行登陆。所以可以直接扔进burpsuit进行无脑爆破

可以载入密码字典爆破成功,输入密码,成功登陆。

2.在发表任何文字的地方以及插入图片地方都做了标签的过滤,空格等的过滤并使用了htmlspecialchars()函数=-=目前我是没有办法绕过///(之后再来看这个程序)

bluecms sp1 审计

做为一个代码审计新手。看过很多教程但进度贼慢。最后准备遵循另一名比我老的新手指的路。dvwa—bluecma—小众无框架cms—小众框架cms—……

简单的看了别人的审计思路。过了这么几天准备自己再来试一试看看能不能复现之前看过的点

bluecms是一个比较简易的并且比较经典的审计入门cms。还是先从登陆操作开始。

1.点击主页上的登录按钮,那么我就会跳转到user.php中,执行act=index_login的操作  到user.php中找到do_login值。


user.php--do_login(

(=-=搞不懂我这个为什么乱码)可以看到这里是获取了用户名与密码似乎没有进行有效过滤。但有一个UC_API,引用了client.php里的函数


(换了不乱码的工具)在client中进行了用户登陆的检查,UC_API_FUNC:判断用户提交信息是否正确,然后返回正确情况下的uid;好的看不懂了。放弃。。。。。。

2.扔进seay工具里。。首先看到的就是大名鼎鼎的ad_js.php(之前没有看过它的审计文章=-=因为听说很简单)

$ad_id通过GET传参,无任何过滤导致注入。
使用union select 查询列数。可知到7时不会报错,在7的位置构造语句

eg:(查数据库表名)?ad_id=1 union select 1,2,3,4,5,6,table_name from information_schema.tables where table_schema=database()

没有报错注入成功。

3.接着往下看ann.php


追踪可控变量$cid


发现被intval限制,,同理发现seay工具里接连几个都被intval限制了1可控变量

然后再往下发现了一个问题


这个public.php中这个$id貌似没过滤。但发现无法利用。最后看到代码开头


引用了文件common.inc.php,而在这个文件中早已对POST GET COOKIES REQUEST进行了过滤

跟踪deep_addslashes函数

用addslashes过滤。但貌似不存在绕过的条件。

4.user.php文件读取漏洞


在用户进行登录操作的时候,$from变量通过$_REQUEST传入,可控。并进行了base64解码

定位showmsg函数


在登陆页面抓包

发现$from在前端也出现了,构造from参数的值为网站根目录下的另一个网站willblog的登录主页,因为开始用了base64解码,先对路径进行编码。然后发包

抓包
发包

在返回的包中href路径确实变成了我所构造的路径。。但由于我电脑上不知道为什么下载了很多个bluecms都没法访问。所以没法看到成果怎么样。。

4.user.php注册页面xss。


获取了$from之后,ps:(跟踪template函数,它是将第二个数的值赋给第一个数组参数的键。)

当$act=reg的时候,他会将$from的值直接显示到浏览器上。

在这里from早就在访问user.php的时候提交了,所以要触发xss需要在访问user.php的时候,就已经提交了恶意请求。需要关闭标签来使我们的XSS生效。而且这里$from是被addslashes过滤了,也就是说我们的XSS语句中不能出现单引号,双引号等等特征字符。构造语句">

成功弹窗。

5.

你可能感兴趣的:(bluecms&&willblog小程序,php代码审计入门练习--by-pursu0)