第一关
1.经过语句and 1=2测试 ,页面回显正常,所以该地方不是数值查询
2.接着尝试在id后面加上',发现页面回显不正常,表示可能存在SQL字符注入

?3.输入--+将sql后面的语句注视掉后,发现页面回显正常,则证明这个地方是单引号字符型注入
?4.接着使用order by 语句判断,该表中一共有几列数据
? order by 3页面回显正常,order by 4页面回显不正常,说明此表一个有3列。 5.将id=1改为一个数据库不存在的id值,如861,使用union select 1,2,3联合查询语句查看页面是否有显示位。
?发现页面先输出了2和3,说明页面有2个显示位 6.然后利用sql查询语句依次爆破出数据库内的数据库名,表名,列名,字段信息 例子: http://127.0.0.1/sqli-labs/Less-1/?id=861' union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+ 这是一个查询数据库名信息的语句

?第二关
1.输入?id=2-1页面信息发生变化,说明此处是数值型注入
?2 order by 3? 页面显示正常,order by 4页面显示不正常,所以该表有3列数据
3? 接着可以使用联合查询进行注入,详细过程参考第一关
第三关
1.向页面输入?id=2'??--+页面显示不正常
但是输入? ?id=2') --+ 页面回显正常,说明此处是字符型注入,而且是以 ('')的方式闭合字符串的
?2.接着使用order by 判断表中有3列数据
3.接着使用联合查询,union select 1,2,3 判断页面是否有显示位? ?答案:有
下面使用第一关所使用的查询语句,测试一下
?
?第四关
与第三关类似,第四关使用? ?("")? ?的方式闭合字符串,然后可以优先使用联合查询注入
1.当输入?id=3" --+时,页面显示不正常
?2.当输入?id=3") --+
?第五关
首先在未知闭合方式的条件下,构造payload进行测试
127.0.0.1/sql/Less-5/?id=1
观察到页面回显如下
?重新构造payload
127.0.0.1/sql/Less-5/?id=1'
观察到页面回显sql查询语句错误
?这里说明我们已经猜中了其闭合方式,后台构造的查询语句为 $sql= “SELECT * FROM 表名 WHERE id = ‘id’ LIMIT 0,1”
构造新的payload
127.0.0.1/sql/Less-5/?id=1' order by 3 --+
回显结果与第一次回显结果一致

我们判断原本的方法已经不能使用,在正常的查询语句下,只会显示You are in …,而在错误的情况下,会爆出sql语句错误的信息,只存在正确和错误两种返回结果,并且不能像前四关一样再去判断显示位,因为根本没有显示位可以利用。
故我们可以猜想,通过一些方法,能不能让在爆出错误的信息下而获得到我们想要的信息呢? 答案是可以的,通过一些特有的函数,我们可以在错误的信息中得到正确的信息。
因为我们已知闭合方式为单引号 基于报错经常使用的函数 updatexml函数,extractvalue函数,floor函数 构造新的payload 这里,我们可以看到爆出使用的库名为security127.0.0.1/sql/Less-5/?id=-1' OR 1 GROUP BY CONCAT_WS(0x3a,database(),FLOOR(RAN(0)*2)) HAVING MIN(0) OR 1 --+

?这里,我们可以看到爆出使用的库名为security
知道库名之后,我们再构造新的payload,用来获取security库中的表
?id=0' UNION SELECT 1,2,3 from ( select count(*),concat(floor(rand(0)*2),(select database()))a from information_schema.tables group by a)b--+

?这里我们可以知道,security库中有emails, referers,agents,users 四个表
|