/文章作者:Kali_MG1937
CSDN博客号:ALDYS4
QQ:3496925334/
今天google找注入点的时候发现某企业一个挺有意思的waf
常规操作绕过去后决定写一篇博客
信息收集
如果有看我前两期绕过waf系列
应该能知道前两期的网站环境均为iis+asp
这种环境下的查询支持非标准Unicode编码
如%u0027,%u003d
这样的编码形式,一些waf并不拦截这些非标准Unicode
更重要的是,它允许网址中夹带无用的百分号%
此环境下的数据库在查询时会自动忽略无用的%
那么利用%对关键字进行截断就很有用,可以看到前两期我基本上用的这种方法过的waf
但这回不一样,php环境,不再是asp环境
也就是说,网站不再支持非标准Unicode编码
这也就给渗透增加了难度和新的挑战
确定注入点
网站新闻页面的url带参数,尝试注入
GET | 结果 |
---|---|
?id=1 and 1=1 | 被拦截,WAF:WTS-WAF |
挺常见的waf
替换等号为like
?id=1 and 1 like 1 | 不拦截,成功查询 |
那么确定参数是int型
尝试绕过
既然有waf,那么它一定会拦截一些连接数据库的操作
尝试
GET | 结果 |
---|---|
?id=1 union select 1 | 果不其然,被拦截 |
试试看大小写混淆
GET | 结果 |
---|---|
?id=1 unioN selEct 1 | 仍然被拦截 |
利用换行符替换空格
GET | 结果 |
---|---|
?id=1%0aunion%0aselect%0a1 | 仍然被拦截 |
随便输入一个包含union select的字符串
也被拦截
那么我猜想,网站应该有个正则表达式对整行语句进行判断
若关键字select前带有union,直接拦截
若是asp环境,我可以直接利用%进行截断关键字来绕过waf
但现在要另外想办法了
网站对整行语句进行判断,如果我的查询语句是一段段分开的呢?
也就是说,利用两个连续的 “–” 符号注释关键词后的这一行,换行后再输入下一个关键词
GET | 结果 |
---|---|
?id=1--%0aunion--%0aselect--%0a1 | 不拦截,被查询 |
果不其然
此外,该waf会对 关键字+括号 进行拦截
经测试在括号前利用 %0a-- 截断就能绕过
构造payload
修改space2comment的脚本
顺便再自己构造一条payload来替换括号
带入sqlmap
你把你?给我交喽
提权
拿到账号密码后登入后台
站长大概是觉得有个waf就万事无忧了
没有对上传的文件进行任何判断
裤子脱完本以为有条内裤,结果是个骚货,直接菊花就对着我,那我肯定要用我的马子插进来的