0x00前言 {#0x00%E5%89%8D%E8%A8%809480}
距离上一次更新,还是在三月份。主要是我最近太忙了无时间更新(挖src,挖cnvd,学业and so on),近期开始会陆续更新了。
在最近跟学长一起挖cnvd之中也是学到了不少关于代码审计的知识,这里手动@Xpr0a.c yyds。挖SQL和rce如喝水。
想看我5月份cnvd证书照片的请于一段时间后到我空间看看(还没归档)。
好了,言归正传。入门代码审计,大家通常会选择从bluecms开始审计,我也就从这个cms开始更新吧(我也是边学边更新)
0x01正文 {#0x01%E6%AD%A3%E6%96%875148}
我使用的环境php5.4.45+apache
- 重装覆盖漏洞
我们先走正常流程搭建好网站如下
由于很多网站会存在重装覆盖的漏洞,所以我们先访问下install文件
可以发现这里确实可以重新安装该网站,漏洞+1(这里还和代审无关)
- SQL注入
这里,我们需要用上seay源代码审计工具
别看这里好像漏洞很多,大多其实是误报,需要我们人工核实。
这里我们先学习挖掘select类型的SQL漏洞吧。
首先先挑选/ad_js.php文件
$ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);
先追踪一下getgone函数,这一看就是自定义函数
这里没什么大碍,就是执行sql语句的。让我们回到刚才的文件
可以发现数据是从这里利用GET方式进入的,当参数不为空时,trim函数会去除字符串两侧的空格,所以对我们没什么影响
这里可以发现文件上方引用了另外一个文件
可以发现,当没有开启魔术引号的时候就进入下面这处对数据的输入进行一定地处理
定位deep_addslashes进入/include/common.fun.php文件
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
最后我们在该处存在注入的地方看到
所以说,我们需要在源代码里查看输出。
Okey,我们来复现下这块漏洞,联合查询这些反复的操作就不多叙述了
由于这里存在魔术引号,当我们爆表以及接下来操作的时候难免会用到引号,但是这里又存在魔术引号无法在该处绕过,所以说我们可以通过把表名转化为16进制即可如下:
/ad_js.php?ad_id=-1%20union%20select%201,2,3,4,5,6,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=0x626c7565
----------------------------待更新-----------------------------------