[基本实验] 拖库

一、支持外连接
利用工具Navicat Premium版本,支持在MySQL、Oracle、PostgreSQL、SQLite及SQL Server之间传输数据,是各种版本的集合。
1.连接->“MySQL”
[基本实验] 拖库_第1张图片
2.在“常规”选项卡中,填写数据库的基本信息,连接名任意填写,在主机名/IP地址文本框内输入IP地址,并在用户名和密码文本框内填写相应的信息。
[基本实验] 拖库_第2张图片
3.可以点击左下角的“连接测试”,可以预先测试连接是否通。
[基本实验] 拖库_第3张图片
4.双击“mytest”即可连接数据库
[基本实验] 拖库_第4张图片
5.点击相应位置,得到有关数据库的更多信息
[基本实验] 拖库_第5张图片
接下来可以将数据库中的内容导出来,有两种选择,其一是导出表结构和数据,另一种选择是仅导出表数据
6.先看看怎样“导出表结构和数据”,选中要导出的表,并单击鼠标右键,选择“转储SQL文件”
[基本实验] 拖库_第6张图片
得到结果
/*
Navicat MySQL Data Transfer

Source Server         : mytest
Source Server Version : 50520
Source Host           : 10.0.3.82:3306
Source Database       : ch4

Target Server Type    : MYSQL
Target Server Version : 50520
File Encoding         : 65001

Date: 2015-07-30 11:12:41
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for member
-- ----------------------------
DROP TABLE IF EXISTS `member`;
CREATE TABLE `member` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `username` varchar(12) NOT NULL DEFAULT '',
  `password` varchar(12) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=gb2312 COMMENT='会员资料';

-- ----------------------------
-- Records of member
-- ----------------------------
INSERT INTO `member` VALUES ('2', 'andy', 'a123456');
INSERT INTO `member` VALUES ('3', 'bob', 'b123456');
INSERT INTO `member` VALUES ('4', 'cindy', 'c123456');
INSERT INTO `member` VALUES ('5', 'mary', 'm123456');
INSERT INTO `member` VALUES ('6', 'david', 'd123456');
INSERT INTO `member` VALUES ('7', 'jane', 'j123456');
INSERT INTO `member` VALUES ('8', 'kim', 'k123456');
INSERT INTO `member` VALUES ('9', 'sam', 's123456');
INSERT INTO `member` VALUES ('1', 'daniel', '123456');
7.也可以仅导出表数据,选择要导出的数据表,并单击鼠标右键,选择“导出向导”,之后的操作可见下图

[基本实验] 拖库_第7张图片


[基本实验] 拖库_第8张图片


[基本实验] 拖库_第9张图片

[基本实验] 拖库_第10张图片

[基本实验] 拖库_第11张图片

[基本实验] 拖库_第12张图片

得到结果为

"2"	"andy"	"a123456"
"3"	"bob"	"b123456"
"4"	"cindy"	"c123456"
"5"	"mary"	"m123456"
"6"	"david"	"d123456"
"7"	"jane"	"j123456"
"8"	"kim"	"k123456"
"9"	"sam"	"s123456"
"1"	"daniel"	"123456"
备注:在本实验中,刚开始无法通过3306连接到目标机器,原因是MySQL数据库只允许本地连接。解决方法是,在数据库中有个名为mysql的数据库,其中有个名为user的表,其中有个名为Host的字段,将localhost改为%即可。

二、不支持外连接
2.1 SQL注射

假设http://www.example.com/user/user.jsp?uid=5中存在SQL注射漏洞,可以利用SQLMap和Burp Suite来导出数据。
python sqlmap.py -u "http://www.example.com/user/user.jsp?uid=5" -D "hacker" -T "pw_members" -C "uid,username,password" --dump --csv-del=" -- " --output-dir="c:\out" --dump-format=CSV --thread 5
--csv-del:导出CSV格式时,列与列之间的间隔字符,默认为空格;
--output-dir:导出文件夹;
--dump-format:导出格式,默认为CSV格式,可选择的导出格式有CSV,HTML和SQLITE三种。

2.2 本地导出
本地导出是指已经有网站的权限,这时攻击者就可以向Web服务器上传类似于“PHPMyAdmin”在线数据库管理的“拖库脚本”。这类脚本非常小巧,是专门针对数据导出而写的脚本。
Navicat其实就提供了数据转发的脚本,非常小巧,这个脚本也经常被人称为“HTTP通道连接”。
安装Navivat后,在Navicat安装目录下有三个php文件,分别是:ntunnel_mysql.php、ntunnel_pgsql.php、ntunnel_msqlite.php。这三个文件分别支持对MySQL、PostgreSQL、SQLite数据库使用HTTP通道连接。
具体步骤如下,以PHP+MYSQL为例:
将ntunnel_mysql.php上传到网站根目录,本次演示将其更名为db.php。然后打开Navicat,单击“连接”->“MySQL”,选择“HTTP”选项卡,勾选“使用HTTP通道”,在“通道地址”栏写入db.php的URL,其他保持默认即可。
[基本实验] 拖库_第13张图片
填写完HTTP通道地址后,返回“常规”选项卡,填写连接名、用户名及密码。这里需要注意的是主机IP地址应该为“Localhost”或“127.0.0.1”,代表本地连接。
[基本实验] 拖库_第14张图片
最终得到结果
[基本实验] 拖库_第15张图片

你可能感兴趣的:(基本实验)