SQLMap入门

安装

  • python 环境
  • 下载地址http://sqlmap.org/

特点

  • 完全支持MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB、HSQLDB和Informix等多种数据库管理系统。
  • 完全支持布尔型盲注、时间型盲注、基于错误信息的注入、联合查询注入和堆查询注入。
  • 在数据库证书、IP地址、端口和数据库名等条件允许的情况下支持不通过SQL注入点而直接连接数据库。
  • 支持枚举用户、密码、哈希、权限、角色、数据库、数据表和列。
  • 支持自动识别密码哈希格式并通过字典破解密码哈希。
  • 支持完全地下载某个数据库中的某个表,也可以只下载某个表中的某几列,甚至只下载某一列中的部分数据,这完全取决于用户的选择。
  • 支持在数据库管理系统中搜索指定的数据库名、表名或列名
sqlmap注入介绍

所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串, 最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将SQL命令注入 到后台数据库引擎执行的能力,它可以通过在web表单中输入SQL语句得到一个存在安全漏洞 的网站上的数据库,而不是按照设计者意图去执行SQL语句

常用命令

参数-v 输出级别

Sqlmap的输出信息按从简到繁共分为7个级别依次为0、1、2、3、4、5和6。使用参数-v 来 指定某个等级,如使用参数-v 6来指定输出级别为6。默认输出级别为1。

  • 0:只显示Python的tracebacks信息、错误信息[ERROR]和关键信息[CRITICAL]
  • 1:同时显示普通信息[INFO]和警告信息[WARNING]
  • 2:同时显示调试信息[DEBUG]
  • 3:同时显示注入使用的攻击荷载
  • 4:同时显示HTTP请求头
  • 5:同时显示HTTP响应头
  • 6:同时显示HTTP响应体
参数-b,--banner检索数据库信息

大多数的数据库系统都有一个函数可以返回数据库的版本号,通常这个函数是version()或者变量@@version这主要取决与是什么数据库。

参数--dbs 列举数据库

当前用户有权限读取包含所有数据库列表信息的表中的时候,即可列出所有的数据库。
列举数据库表

参数-d 直连数据库
  • 服务型数据库-MySQL,Oracle
    python3 sqlmap.py -d "mysql://用户名:密码@地址:端口/数据库名字" -f --banner --dbs --users
python sqlmap.py -d "mysql://root:toor@localhost:3306/mysql" -f --banner --dbs --users
  • 文件型数据库-SQLite
参数-u,--url 指定目标URL获取

URL格式:http(s)://targetur\[:port\]/

python sqlmap.py -u "http://127.0.0.1:3306?id=1"
参数-x 读取xml站点地图

为便于搜索引擎收录,许多网站专门为搜索引擎生成了xml格式的站点地图

参数-m 扫描文本文件中给定的多个目标

从多行文本格式文件读取多个目标,对多个目标进行探测
sqlmap -m target.txt

www.target1.com/vuln1.php?q=foobar
www.target2.com/vuln2.asp?id=1
www.target3.com/vuln3/id/1*
参数-r 从文件加载HTTP请求

可以将一个HTTP请求保存在文件中,然后使用参数
sqlmap -m target.txt

POST /vuln.php HTTP/1.1
Host: www.target.com
User-Agent: Mozilla/4.0

id=1
参数-l 日志文件分析

可以直接把Burp proxy或者WebScarab proxy中的日志直接倒出来交给sqlmap来一个一个检测是否有注入。
从文本中获取多个目标扫描

参数-c 配置文件读取

从配置文件sqlmap.conf中读取目标探测

参数-g Google搜索引擎结果作为目标url处理

sqlmap可以测试注入Google的搜索结果中的GET参数(只获取前100个结果)。

python sqlmap.py -g "inurl:\".php?id=1\""
参数--method 强制使用给定的HTTP请求方法

一般来说,Sqlmap能自动判断出是使用GET方法还是POST方法,但在某些情况下需要的可能是PUT 等很少见的方法,此时就需要用参数--method来指定方法。

python sqlmap.py -u "http://127.0.0.1:3306" --method=GET
参数--data 表单提交数据

默认情况下,用于执行HTTP请求的HTTP方法是GET,但是可以通过提供在POST请求中发送的数据隐式 的将其改为POST。这些数据作为参数,被用于SQL注入检测

python sqlmap.py -u "http://127.0.0.1:3306" --method=POST --data="username=123&password=456"
设置cookie

当你使用--cookie参数时,当返回一个Set-Cookie头的时候,sqlmap会询问你用哪个cookie来继续接下来的请求。当--level的参数设定为2或者2以上的时候,sqlmap会尝试注入Cookie参数。

--cookie #设置cookie
--cookie-del # 设置cookie分隔符
--load-cookies # 通过带有cookie的Netscape/wget格式的文件进行探测注入
--drop-set-cookie # 如果响应中使用set-cookie设置了新的cookie,sqlmap会在之后的探测中使用它,可以用这个参数忽略新cookie。
--cookie="PHPSESSID=a8d127efc693b45"
--cookie-del="&"

你可能感兴趣的:(SQLMap入门)