sqlmap工具使用用法详解

sqlmap工具使用用法详解
QLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个很是棒的特性,即对检测与利用的自动化处理,下面咱们来看sqlmap工具使用用法详解吧。
sqlmap平时使用得很是的多,但命令也是十分的多。每次用的时候,都要去网上搜索。因而决定本身总结一下sqlmap常见的用法,方便本身使用。
特殊参数
-v
-v表示显示sqlmap在进行注入时的详细信息,一共有七个等级,默认为1
0,只显示python错误以及严重的信息
1,同时显示基本信息和警告信息
2,同时显示debug信息
3,同时显示注入的payload
4,同时显示HTTP请求
5,同时显示HTTP响应头
6,同时显示HTTP响应页面
–level
默认状况下SQLMAP只支持GET/POST参数的注入测试,可是当使用–level参数且数值>=2的时候会进行cookie注入测试;当>=3时,会进行User-Agent和Referer的注入测试。
–risk
risk设定风险等级,默认是1会测试大部分的测试语句,2会增长基于事件的测试语句,3会增长OR测试语句。
-f或者–fingerprint
执行检查普遍的DBMS版本指纹,这个参数用得很少。
获取URL
-u或者–url
-u是最多见、经常使用的用法
python sqlmap.py -u "http://www.example.com/index.php?id=1"
-l
从burpsuite或者WebScarab代理日志中去测试每一个URL是否存在SQL注入
-r
从文本文件中获取HTTP请求(这就要求此文本文件保存的信息是HTTP请求的),这样HTTP就能够利用HTTP请求中的参数。
例如文本文件中的内容为:php

POST /index.php HTTP/1.1
Hos: www.example.com
User-Agent: Mozilla/4.0
id=1
那么使用sqlmap进行注入时,sqlmap自动将HOST和User-Agent设置为文本文件中的值
当处理的请求是HTTPS的时候,则须要使用–forc-ssl参数来使用,或者在HOST头后面加上:443。
请求
POST请求
参数:–data
–data主要适用于POST方式提交。用法以下:python

python sqlmap.py -u "http://www.example.com/index.php" --data="id=1"
cookie相关
参数:-cookie,–load-cookies,–drops-set-cookie
cookie参数在sqlmap中的应用主要是有2个方面:
Web应用须要进行登录的时候
测试cookie注入
若是须要使用cookie进行登录,则须要经过–cookie将cookie进行赋值。在HTTP请求中,遇到Set-cookie时,sqlmap会自动获取而且在之后的请求中加入,而且会尝试SQL注入。
当–level>=2时,则会尝试进行cookie的注入测试。
User-Agent相关
参数:–user-agent,–random-agent
默认状况下sqlmap的HTTP请求头中的User-Agent是:web

sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)
可使用–user-agent参数来进行修改,同时也可使用–random-agent参数来随机化的从./txt/user-agents.txt中获取。
当–level参数设定为3或者是3以上时,会尝试对User-Agent进行注入测试。
Referer头
参数:–referer
sqlmap能够在请求中伪造HTTP中的referer,用法与user-agent的用法相同。当–level参数设定为3或者3以上的时候会尝试对referer注入。
请求设置
设定请求间隔
参数:–delay
设定两次请求间的时间间隔。若设定为0.5则表示间隔时间是半秒,默认是没有延迟
设定超时时间
参数:–tiemout
设定超时时间,主要是设定一个请求超过多久被断定为超市。弱设定为10.5表示是10.5秒,默认是30秒。
设定超时重试
参数:–retries
当请求超时时,设定从新尝试链接次数,默认是3次。
关掉URL参数编码
参数:–skip-urlencode
关闭URL编码,这个参数通常用得比较少。目前几乎全部的web服务器都支持RFC标准。
执行自定义Python代码
参数:–eval
在有些时候,须要根据一个参数的变化而修改另外一个参数,才能造成正常的请求。此时就须要使用到--eval。例子以下sql

python sqlmap.py -u "http://www.example.com?id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"
上面的请求参数中的hash值就是id值的md5,这时就须要使用到自定义Python代码了。
注入
测试参数
参数:-p,–skip
-p,表示的就是须要进行注入测试的参数。例如,-p “id,user-agent”
–skip,表示不不须要进行测试的参数,例如–skip=”user-agent”
伪静态注入
不少框架会使用URL重写技术,此时sqlmap就没法使用参数注入,可是能够在须要测试的参数后面加上*
例子以下shell

python sqlmap.py -u "http://blog.spoock.com/2016/09/04*/sqli-bypass/"
绕WAF
参数:–tamper
不少时候有WAF设备会拦截sqlmap的注入,此时就须要使用--tamper对注入的SQL语句进行变形来进行绕过。全部的tamper脚本都是在sqlmap中的tamper中的脚本有定义的,能够进入到tamper目录下进行查看。数据库

python sqlmap.py - u"http://www.example.com?id=1" --tamper tamper/between.py,tamper/randomcase.py
提取数据
标志
参数:-b,–banner
检索数据库管理系统的标识
用户
参数:–current-user
返回当前数据库的管理用户
当前数据库
参数:–current-db
返回当前链接的数据库
DBA检测
参数:–is-dba
检测当前的管理用户是不是DBA
数据库枚举
参数:–dbs
若是当前的用户能够读取全部的数据库的信息,便可列出全部的数据库
数据库表枚举
参数:–tables -D someDatabase
列出某个数据库(someDatabase)中全部的表名,例子以下:服务器

python sqlmap.py -u "http://www.example.com?id=1" --tables -D cms
字段枚举
参数:–columns -D someDatabase -T someTable
列出someDatabase数据库中的someTable表中的全部的字段信息。若是没有使用-D参数指定某个数据库的时候,则默认使用当前数据库cookie

Python sqlamp.py -u "http://www.example.com?id=1" --columns -D cms -T users
获取表中数据的数目
参数:–count
使用–count就能够获取表中数据的个数框架

python sqlmap.py -u"http://www.example.com?id=1" --count -D cms
上述的sqlmap的语句会列出在cms数据库中全部的表的数据
下载表中的数据
参数:–dump -D someDatabase -T someTable -C someColumns
使用–dump就能够将某个表中的数据下载到本地。指定-C的值表示是下载某一列全部的数据,若是没有指定则是下载表中全部的数据。dom

python sqlmap.py -u "http://www.example.com?id=1" --dump -D cms - T users
MISC
自定义SQL语句
参数:–sql-query,–sql-shell
虽然sqlmap会自行选择sql语句进行测试,可是也能够选择执行自定义的SQL语句。

python sqlmap.py -u"http://www.example.com?id=1" --sql-query "select database()" 获取shell 参数:–os-cmd,–os-shell 使用–os-shell参数能够模拟一个真实的shell,在此shell上能够输入任何想执行的命令。 这个命令平时使用得较少,等有必定的使用体会再来进行详细的补充说明。

相关文章
相关标签/搜索