2

记录过某常见WAF最新版

 4 years ago
source link: https://www.freebuf.com/articles/web/231905.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

今天在群里又有人问我怎么过某WAF,所以决定写个文章,记录下我注入时是如何过WAF的。

3MbaUfV.jpg!web

首先下载最新的4.0

QVjIjaY.jpg!web

然后搭建环境我就不多说了,这里我就用sql-labs当作示例来说了。第一关非常简单大家应该都是知道的,语句就是?id=-1′ union select 1,2,3 –+

BnINBrb.jpg!web

非常经典的显错注入,这个时候我们把WAF打开

byIRbyV.jpg!web

mEnqeeF.jpg!web

好!过不去,渗透失败,本篇结束!!!

咳咳咳,别走别走别走~ 开个玩笑,咱们继续。首先 按照表情包的操作:

eIzaeqI.jpg!web

And 1=1 既然被拦截 那我们如何用and进行测试呢?我们先测试了and后面不跟数据 发现没有出现拦截,说明他是靠着后面的1=1来进行识别的,那么从1=1下手。我们可以试试and -1=-1 把我们常用的正数变成负数,一样是ok的,但是可以绕过去。

7Rvimy2.jpg!web

如果你非要用1=1,不用浑身难受,那也行啊,那咱们就从and下手,把and变成&,一样可以过 毕竟and=&但是!!!&在PHP内是连接符的意思,有可能会被错误识别,所以我们最好把它进行url编码转换也就是%26

于是 %26 1=1 成功。

uUFJVry.jpg!web

但是其实我个人真的强推用-1来进行检测啊!我觉得比and好用hhh

vy6JJzy.jpg!web

接下来我们就是查看是否有显错点了

Nvee6jR.jpg!web

被拦截了

这个时候我们尝试老牌注入操作 内联注释 来试一试 顺带给解释下

/**/注释 里面的语句不执行
/*!*/内敛注释 语句依旧执行

就是说我们运行时/*!union select 1,2,3,*/ 语句依旧会被执行,一半情况下如果检测到了被注释,那肯定就不会报错了!但是!现实依旧啪啪打脸,这个操作也不太行了!

f6jiqmr.jpg!web

于是出现了另外一种骚操作 版本号绕过

/*500001!*/表示数据库版本>=5.00.01时就会执行

但是500001已经凉了,我们可以枚举数字进行跑包测试,但是为了省事,我已经测试过了,10044依旧还是很坚挺的!于是出现了这样美滋滋的场景:

UzUvMrn.jpg!web

经过测试

/*!10044union*/ /*!10044select 1,2,3*/–+ 成功绕过
union /*!10044select 1,2,3*/–+ 成功绕过

接下来我们说说另外一种绕过的方式截断绕过。首先科普sql语句内#和–+都可以作为注释并且url转码后的#是%23,为什么要用%23嘞,因为#在php内还有锚点的作用,为了不被错误解析,所以用经过url编码后的。其次%0A是换行符 可以理解成下一行接着上一行的命令继续执行。

说完这些,我们继续操作

rMFnyab.jpg!web

%23QQQ%0Aunion%23QQQQ%0Aselect 1,2,3–+ 成功绕过

原理就是经过狗的检测,#后的已经被注释了,但是我们重新另起一行,继续跟着前面的命令,所以成功的绕过去了,至于这些Q都是为了帮助我们绕过去,用来混淆的字符,你也可以随便输入别的字符都ok

这时候配合内联注释,起飞兄弟萌!

EnyaIva.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK