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值。
(=-=搞不懂我这个为什么乱码)可以看到这里是获取了用户名与密码似乎没有进行有效过滤。但有一个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语句中不能出现单引号,双引号等等特征字符。构造语句"><script>alert(1);</script>
成功弹窗。
5.