'Sqli-Lab'

Less-01

字符型'
联合查询Or报错注入

联合查询

报错注入

Less-02

数值型
联合查询Or报错注入

联合查询

报错注入

Less-03

字符型')
联合查询Or报错注入

联合查询

报错注入

Less-04

字符型")
联合查询Or报错注入

联合查询

报错注入

Less-05

字符型'
布尔盲注or报错注入

布尔盲注

报错注入

Less-06

字符型"
布尔盲注Or报错注入

布尔盲注

报错注入

Less-07

字符型'

提示:Use outfile

将查询结果写入version.txt文件,提示报错,但文件已经写入成功

也可以写入一句话

php代码使用'进行包裹,可以防止$被浏览器转义导致无法正常写入

Less-08

字符型'
没有错误回显,无法报错注入

布尔盲注

Less-09

字符型'
此关标题为基于时间的盲注
在代码里,不管是否正确,都显示相同的输出“You are in………..”
所以只能使用延时盲注

Less-10

字符型"
和Less-09一样,都是基于时间的盲注
不同之处在于,使用"进行闭合

Less-11

字符型'
使用万能密码可以登录

可以使用联合查询进行注入

可以使用报错注入进行查询

Less-12

字符型")
同样使用万能密码登陆
在构造payload时,使用("")进行包裹

同样可以使用联合查询、报错查询

Less-13

字符型')
使用万能密码登录
无回显

使用布尔盲注

Less-14

字符型"
和Less-13除了闭合方式不同外,其他均相同

由于有错误提示,可以使用报错注入

Less-15

字符型'
使用万能密码测试闭合

使用布尔盲注

使用延时盲注

Less-16

字符型")
使用万能密码测试闭合

和Less-15除了闭合方式不同外,其他均相同

Less-17

字符型'

判断闭合

报错提示

1
near '")' WHERE username='admin''

第一个和最后一个'是报错自带的,可以无视
在payload里写的是'"),但在报错提示中,少了一个',所以唯一的解释是这个单引号和前面的单引号闭合了,所以可以判断是字符型'
在尝试的过程中,uname无法产生报错信息,查看源码发现,uname被各种转义,而passwd并没有被转义,所以在passwd处进行注入。
在报错信息中,可以看出uname是由单引号包裹的,按照写代码的习惯,可以推断passwd也是由单引号包裹的,但这种推断并不合理。

报错注入

延时盲注

Less-18

HTTP头部-UserAgent注入
字符型'

为什么不正常注入呢?因为在代码中,uname和passwd都被转义了
为什么要从UserAgent注入呢?因为标题有Uagent
这题刚打开只显示IP,只有登录才可以显示UA,但uanme和passwd都被转义了,只能正常登录,从Less-17可以修改密码
使用BP抓包对HTTP请求进行修改

payload中,'1'='1是因为在代码中insert添加了3个字段,为了不报错,需要再添加一个字段;但是直接注释掉却会报错,不明白为什么。

显示页面

Less-19

HTTP头部-Referer注入
字符型'

和Less-18除了注入位置不同之外,其他相同

从代码上看,不需要,'1因为已经2个字段了,但不加会报错,不明白为什么,需要再想想。

显示页面

Less-20

HTTP头部-Cookie注入
字符型'

联合查询

登录之后,对cookie进行修改

显示页面

报错注入

登录之后,对cookie进行修改

显示页面

Less-21

HTTP头部-Cookie注入
字符型')

联合查询

登录之后,对cookie进行修改

显示页面

报错注入

登录之后,对cookie进行修改

显示页面

Less-22

HTTP头部-Cookie注入
字符型"

跟Less-21的区别是需要使用"进行闭合

报错注入

登录之后,对cookie进行修改

显示页面

Less-23