通过前人写的思路一步一步,果然就发现了问题;古人诚不欺我。

[附] 源码地址
链接:https://pan.baidu.com/s/170wahztMj_iqcYu2dZpAJw
提取码:ynfo

浏览整体代码结构

在浏览代码结构时,发现了对全局参数的过滤

对$_GET、$_POST、$_COOKIE全局变量都调用了自定义的addsl函数

/include/init.php

跟进addsl函数,发现内部是调用的addslashes函数,在单引号、双引号、反斜杠、Null前面添加反斜杠。

/include/fun.php

发现缺陷

此时我觉得$_SERVER变量应该会出现问题

于是我全文搜索$_SERVER变量

搜索结果很多,我先跳过了admin目录下面的结果,因为该目录下的文件多半都需要先登录后台才能访问

因为有了之前审计zzcms的经验,在看到getip函数时,果断觉得有问题,可以直接通过设置Client-Ip来伪造Ip

关于zzcms那一篇看官可以移步: zzcms v8.3 关于getip函数引起的SQL注入

于是搜索调用getip函数的页面,优先寻找游客权限可以直接利用的页面

同样,先跳过admin目录下的结果

感觉如图这个就可以:

跟进

可以看到先调用了两个函数:fl_value、fl_html函数。

SQL语句里面使用了单引号包裹。

跟进过滤函数

跟进fl_value函数

是对SQL注入的一些过滤:将黑名单中的字符串替换为空

可以发现,并没有设置迭代过滤

也就是说可以通过多重关键字的形式进行绕过,如:selselectect这种形式

再来跟进fl_html函数,可以看到直接调用的时htmlspecialchars函数

htmlspecialchars函数与htmlentities函数如出一撤,默认不转义单引号

相关知识可以移步红日安全团队的文章:

误用htmlentities函数引发的漏洞

情况都摸透了,存在SQL注入,于是寻找是哪个页面调用的/mx_form/order_save.php文件

寻找被调用页面

是模板里面的文件,这样子的话就没法通过文件的路径直接访问了

毕竟游客身份可以直接访问,于是来web页面找找,insert语句说明了用户可以输入数据,看到留言这里果断觉得可以

看一下表单是否只想了ordersave.php文件,果然是

/mx_form/order_save.php 文件中添加代码输出ip

可以看到成功输出了,确认是该页面无疑了

绕过过滤

再添加一下SQL语句的输出,来方便构造Paylaod

添加单引号之后,发现报错了,果断上报错注入的Payload,成功获取数据库名

Client-Ip: TEag1e',updatexml(1,concat(0x7e,database(),0x7e),1),'

因为后续查询的时候会触发源码里的过滤,再回过头来看一下过滤。

select替换为空,于是使用 selselectect 绕过;

from 替换为空,需要注意的是,这里检测的from两侧各有一个空格,于是使用 fro from m 来进行绕过;

= 使用 like 来进行绕过。

最后的Payload:

Client-Ip: TEag1e',updatexml(1,concat(0x7e,(selselectect table_name fr from om information_schema.tables whe where re table_schema like database() limit 0,1),0x7e),1),'

后续

提交CNVD的,心情不错。

先看看CNVD上都有哪些漏洞了,看了一下后,凉凉 ==

结尾并不一定是结束

闲来无事写个自动化脚本:


本文由 TEag1e 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gificon_mrgreen.pngicon_neutral.pngicon_twisted.pngicon_arrow.pngicon_eek.pngicon_smile.pngicon_confused.pngicon_cool.pngicon_evil.pngicon_biggrin.pngicon_idea.pngicon_redface.pngicon_razz.pngicon_rolleyes.pngicon_wink.pngicon_cry.pngicon_surprised.pngicon_lol.pngicon_mad.pngicon_sad.pngicon_exclaim.pngicon_question.pngicon_rolleyes.gif2016gz.gif2016kun.gif2016zhem.gif2016am.gif2016kel.gificon_twisted.gif2016lh.gificon_neutral.gif2016ka.gif2016tx.gificon_evil.gif2016bb.gif2016yun.gif2016qq.gif2016baojin.gificon_confused.gif2016kk.gif2016zk.gif2016kb.gificon_mad.gif2016yhh.gificon_exclaim.gif2016xia.gif2016gg.gif2016qd.gificon_smile.gif2016lengh.gificon_biggrin.gif2016bz.gif2016wq.gificon_eek.gificon_arrow.gificon_wink.gif2016tuu.gif