前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录过某常见WAF最新版

记录过某常见WAF最新版

作者头像
FB客服
发布2020-04-21 15:19:24
4110
发布2020-04-21 15:19:24
举报
文章被收录于专栏:FreeBufFreeBuf

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

首先下载最新的4.0

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

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

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

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

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

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

于是 %26 1=1 成功。

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

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

被拦截了

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

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

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

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

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

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

经过测试

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

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

说完这些,我们继续操作

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

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

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

%23QQQ%0Aunion%23QQQQ%0Aselect1,database/!()/,3—+

后面就不用我多说了,大家就知道如何操作了!

*本文作者:淡年华,转载请注明来自FreeBuf.COM

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档