BlueCMS审计
BlueCMS审计
审计过程
还是采用正则搜索sql语句的方式,一个一个找可控变量
ad_js.php
这里很明显,ad_id参数值可控,然后又是直接拼接的sql语句,拿给getone函数去执行,那么再跟进看看getone函数写了什么过滤逻辑没有
很好,没有过滤逻辑
那么来触发漏洞,存在漏洞的文件是ad_js.php,参数是ad_id,数字型注入,不用闭合引号
那么直接注入就行
结果输出在注释
但是这里其实也是有过滤的,过滤的逻辑没有直接写在本文件中,而是在包含的文件中:
这里有对输入的参数值进行转义的逻辑
检查是否启用了魔术引号功能,如果没有启用,则用自定义的函数对输入的参数进行引号等符号转义,跟进一下deep_addslashes函数
如果参数是数组类型,则递归处理数组每一个元素,都进行引号等符号的转义
使用php内置的addslashes函数进行转义
1 | addslashes() 是 PHP 的一个内置函数,用于向字符串中的特殊字符添加反斜杠(\),以便它们可以在某些上下文中被安全地使用。具体来说,它会为以下字符添加反斜杠: |
在后面的注入利用时,如果用到了引号,那怎么该绕过这个转义呢?可以使用十六进制编码绕过
ad_pone.php
显然,这里的id参数可控,而且上下文也没有什么过滤逻辑,只有包含的文件中有一个全局过滤,转义引号,那么这里又是数字型的注入,是不会受到很大影响的
然后就去找触发,由于这里接收了多个参数,于是我直接去找更新相关的功能点
看了看文件位置,又是admin目录下的,那么大概率是后台的一处功能点了
于是翻找后台功能点,找到更新相关的功能
抓包看看参数是否对应
完美匹配
然后在id参数处注入即可,使用数字型盲注
实际情况需要使用截断函数一位一位得爆破盲注
1 | 1 and if(0x352e352e3533=(select version()),1,0) |
admin_log.php
这个也是和上面的差不多,只是从update变成了dalete,还是盲注
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 X1ly?S!
评论