【网络安全】——sql注入之奇淫巧技bypass(持续更新中)

时间:2022-12-04 10:53:59

作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:想把世上所有的情话都说给你听

【网络安全】——sql注入之奇淫巧技bypass(持续更新中)

SQL注入bypass一直是个技术活,技巧也非常多,但有些技巧不是一直都好用的,所以写下这篇博客来记录我自己认为的平时比较好用的bypass技巧,都是经过了实战渗透检测的,目前内容较少,会实时更新,建议收藏 

目录

一:内联注释

二:魔法注释

三:like  "[%23]"

四:截取函数报字段技巧(2022.11.26)


一:内联注释

适用环境某个函数被识别造成拦截后

格式:/*![五位数字版本号] [原函数]*/

 实例: 

原:    -1 ' union select 1,database(),3 %23

情景一:union函数被识别,遭到WAF拦截,需过滤函数

防过滤:-1 ' /*!12345union*/ select 1,database(),3 %23

【网络安全】——sql注入之奇淫巧技bypass(持续更新中) 注意:其中的12345是版本号,并不一定是12345,但肯定是五位数字,所以通常都是使用burp批量跑五位数字的字典,最后成功bypass 

二:魔法注释

适用环境:某个位置的空格或者带有括号的函数被识别引起过滤

格式:/*[特殊字符构成的字符串]*/

 实例

原:    -1 ' union select 1,database(),3 %23

情景一:union和select之间的空格需要做防过滤

防过滤:-1 ' union/*--+*/select 1,database(),3 %23

情景二:database()函数被识别,需要过滤

放过滤: -1 ' union select 1,database/*//-*/(),3 %23

【网络安全】——sql注入之奇淫巧技bypass(持续更新中)

 同样的道理,这里的/**/中间的特殊字符串也不是固定的,直接用特殊字符生成字典,再burp批量跑即可

三:like  "[%23]"

 这是目前比较新的一种过滤方式,也成为很多自写防护规则网站的突破口

格式 like "[%23]"

 适用:这个倒是没有什么适用的环境,总之就是迷惑性很强,会将前面的内容识别为空,再将攻击语句放在后面即可,

在平时的sql注入时,加单引号没问题就直接放弃了?不妨试试这个方法

实例

原:    1 ' union select 1,database(),3 %23



防过滤:1 like "[%23]" union select 1,database(),3 %23

【网络安全】——sql注入之奇淫巧技bypass(持续更新中)

四:截取函数报字段技巧(2022.11.26)

left(参数1,参数2)函数,功能是从参数1字符串的左侧向右取参数2个字符,但是需要注意的是,参数1的值是字符串,大家肯定会第一时间想到形如"xxxxx"的字符串,但是别忘了,字段名也属于字符串

来看一段简单的命令

select * from users where id = 1 and left("abcd",1)='a'

【网络安全】——sql注入之奇淫巧技bypass(持续更新中)

 这个命令都能理解吧,那我们将abcd的引号去掉再来看看,如下

【网络安全】——sql注入之奇淫巧技bypass(持续更新中)

 嗯?为什么会提示没有abcd这个字段吗?它为什么会被识别成字段呢?别急,听我好好跟你讲讲

上面这个语句,是在users表里取id等于1的数据,此时and后面的逻辑判断语句当然被认为也是一个处理数据的限制条件,并且left()函数的参数1必须是字符串,也就是abcd必须是字符串,但是abcd又没有引号,他就会认为abcd是一个量,而且现在是在表中取数据,他就会认为该语句仍然是对字段进行处理,就把abcd当做字段来处理了,所以就出现了不存在这个字段的报错

在目标对敏感字限制得很严但是又没过滤left函数时,就可以做一个字段名的字典,对目标的字段名进行批量爆破,没出现这个报错就是该字段存在,这也是一种很好用的方法

right()函数, substr()函数均可,原理也相同,应该还有很多其他的函数,只要参数涉及到字符串都可以,后期我会再整理一下