sql脱库的几种方法

当发现sql注入以后,脱库的方法,有如下几种:
 
(1)当目标主机支持外部链接时,使用Navicat 进行链接!当时目标主机不一样,使用的Navicat种类不同:
mysql : Navicat for MySQL
oracle : Navicat for Oracle
全版本的Navicat Premium,支持MySQL, Oralce, PostgreSQL, SQLit 以及SQL Server。
 
补充:mysql端口默认:3306,mssql默认端口:1433 , oracle默认端口:1521
 
当使用Navicat链接上数据库以后,选择须要脱库的表,右击导出便可。
 
(2)当拥有权限时,咱们能够上传脚本脱库,固然这里Navicat也提供了脚本。Navicat的安装目录下有ntunnel_mysql.php   ntunnel_pgsql.php 和 ntunnel_sqlite.php, 这三个文件分别支持对Mysql,PostreSQL 和SQLite数据库使用HTTP通道链接,具体使用过程为:
1.将ntunnel_mysql.php上传到目标机器的根目录,而后打开Navicate,单击“新建链接”——》“mysql”,选择HTTP选项卡,勾选“使用HTTP通道”,在“通道地址”栏写入ntunnel_mysql.php的URL,其余保持默认,而后返回常规选项卡,填写连接名,用户及密码,这里须要的注意的是,链接的IP地址须要写“Localhost”或者“127.0.0.1”。
 
(3)没法远程链接时,sql注射!
首先咱们使用sqlmap进行注入,并使用适当的输入命令如 --current_db 得出当前数据库名,使用--databases 得出当前数据库中的表 --columns得出当前数据库中的列名。使用--dump参数将所选的数据下载到本地。
 
当使用mysql --dump操做失败时,咱们可使用sqlmap配合burpsuit进行注入。具体流程以下:
1.首先咱们使用sqlmap进行测试,当测出数据库名,代表以后,使用--count 参数,将将表中的数据条数统计出来,记为N。
2.以用户表为例子,咱们注入出用户表中的数据条数,而且查看到数据库表中的id为主键,而且递增。这是咱们能够构造注入语句,而且使用bp进行抓包,将抓包信息,发送给intruder,在position模块,将id做为变量,在payloads模块中,将payloads类型设置为Numbers,而且将值设置为从0到以前的N。
3.选择抓取的数据,在option——》Grep extract模块中单击add,而后在弹出的新界面中选择“Fetch Response”获取返回信息,获取返回信息后,选择你要抓取的内容,BP会根据选取的内容自动生成正则表达式,当正则表达式设置好以后,单击OK,能够继续添加须要的数据。
4.选择intruder——》start attack   开始转去数据,在数据抓取结束以后,选择save  ——》“Result Table”,保存导出数据的界面。
相关文章
相关标签/搜索