/*
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.也可以仅导出表数据,选择要导出的数据表,并单击鼠标右键,选择“导出向导”,之后的操作可见下图
得到结果为
"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,其他保持默认即可。
填写完HTTP通道地址后,返回“常规”选项卡,填写连接名、用户名及密码。这里需要注意的是主机IP地址应该为“Localhost”或“127.0.0.1”,代表本地连接。
最终得到结果