各种SQL绕过

绕过条件过滤

1.过滤注释

过滤#和--+:试试输入『id=1’ or '』,看看可以用布尔方式不
                     布尔方式成功,试一下『 id=1' and (select DATABASE()='security') or'』
                     可以使用 :%00代替--+注释掉limit 0,1           
                    

2.过滤OR&AND

使用『&&』替代『and』,『||』替代『or』,也可以试试使用『oorr』来绕过。

3.过滤空格

使用+代替空格。

过滤UNION&SELECT

1.

正则修饰符不是『i』而是『s』,则意味着匹配的对象是大小写敏感的,那么就简单多了呢。
提交id=12211' union select * from users where id='2'||',然后看一下过滤后还剩下什么了

在MySQL中tab,空格,回车都可以隔断语句,可以用使用/**/ 或() 或+ 代替空格,%0c =换页、%09 = 水平制表符、%0d = 回车、%0a = 换行。试试 『id=12211%27+uniOn%09selEct%0d1,2,password%0dfrom%0dusers%0dwhere%0did=%272%27||%27』
2.

使用『union all select』来绕过。

绕过函数过滤(通过\转义)

1.自定义转义函数


解析:本代码有三个过滤。第一个是过滤将反斜线替换为双反斜线。第二个和第三个分别是将单引号和双引号转义,即在引号前面添加反斜线。本数据库是gbk的,可以进行『宽字节』注入。

在单引号之前插入%bf,『% bf \’』就变成了『 %bf%5c%27 』(单引号是%27。反斜线是%5c)相当于再显示就变成了『縗’』,单引号出来了。则最后的SQL语句就变成了『SELECT * FROM users WHERE id='-11縗'union select * from users where id =3-- ' LIMIT 0,1』
怎么吃的:
GBK编码,它的编码范围是0×8140~0xFEFE(不包括xx7F),在遇到%df(ascii(223)) >ascii(128)时自动拼接%5c,因此吃掉‘\’,而%27、%20小于ascii(128)的字符就保留了。

2.addslashed()函数进行转义

和上一个自定义函数差不多,只不过多了个NULL转义而已。在单引号之前插入%bf。

3.mysql_real_escape_string()函数进行转义

它比addslashes函数多转义了换行符、制表符等。理论上这个函数是很安全,而且能避免宽字节注入的。

绕过伪静态

有扩展名形式

发现它打开的页面是『Less-38/id/1.html』

貌似是静态网页,将1改为2,是正常页面,信息是ID=2人的用户信息。在后面打个单引号呢

报错了,那这里不是注入点。那打在2后面,.html前面呢,出现SQL错误。

所以这次的注入点在数字部分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值