文档章节

sqlmap工具使用用法详解

 时间财富网
发布于 2016/11/17 09:55
字数 1839
阅读 69
收藏 0

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请求中的参数。
例如文本文件中的内容为:

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 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是:

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。例子如下

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就无法使用参数注入,但是可以在需要测试的参数后面加上*
例子如下

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参数指定某个数据库的时候,则默认使用当前数据库

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的值表示是下载某一列所有的数据,如果没有指定则是下载表中所有的数据。

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上可以输入任何想执行的命令。
这个命令平时使用得较少,等有一定的使用体会再来进行详细的补充说明。

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 37
码字总数 57314
作品 0
成都
私信 提问
加载中

评论(1)

时间财富网
这个不错哟
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法

这是最近学习渗透和网站攻防的文章,希望能深入地学习这部分知识,自己作为一个初学者,前一篇文章从数据库原理解读了防止SQL注入,这篇文章通过SQLMAP工具简单介绍SQL注入及用法。自己仍在慢...

Eastmount
2017/07/18
0
0
sqlmap 注入基本用法

最近一直在用sqlmap暴库啥的,对sqlmap的用法一直用的比较少,今天用实例在演示一下强大的注入工具sqlmap的基本用法。。。。 简单介绍: sqlmap是一个自动化的SQL注入工具,其主要功能是扫描...

freshman411
2014/04/20
0
0
gradle 小记 -- Copy Sqlmaps

当使用mybatis时需要编辑sqlmap xml文件,如果将sqlmap文件放入resources中对于查找很不方便,一般一个接口对应一个sqlmap文件,那么最方便的做法就是将sqlmap和接口放到一个文件夹中并且命名...

alexqdjay
2016/10/04
43
0
***学习笔记--场景篇--通过mysql的root账号来get shell

场景介绍: 今天的场景是前一周在内网*的时候遇到过的,找到一个mysql数据库弱口令。 账号和密码分别是root,也就是mysql中的dba。 这里其实权限很大了,首先mysql的root用户具有文件写权限,...

qq414207614
2018/06/26
0
0
SQL注入之SQLmap入门

什么是SQLmap? SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。 读者可以通过位于S...

fzxu_05
2015/12/10
393
0

没有更多内容

加载失败,请刷新页面

加载更多

spring aop学习

1.aop和spring aop的关系? aop是一种思想,spring aop是aop的一种实现。 2.Spring aop和AspectJ的关系? 这两种都是实现aop的,spring借助AspectJ的语法实现aop的功能 3.@AspectJ support和...

llsydn
56分钟前
3
0
OSChina 周六乱弹 —— 世界的源代码

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @小鱼丁 :#今日歌曲推荐# 分享Jason Mraz的单曲《Prettiest Friend (Demo)》: 《Prettiest Friend (Demo)》- Jason Mraz 手机党少年们想听歌...

小小编辑
今天
311
10
java框架学习日志-13(Mybatis基本概念和简单的例子)

在mybatis初次学习Mybatis的时候,遇到了很多问题,虽然阿里云的视频有教学,但是视频教学所使用的软件和我自己使用的软件不用,我自己用的数据库是oracle数据库,开发环境是idea。而且视频中...

白话
今天
14
0
Java基础:String、StringBuffer和StringBuilder的区别

1 String String:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。 String类的包含如下定义: /** The value is used for character storage. */private final cha...

watermelon11
今天
6
0
mogodb服务

部署MongoDB 官网: https://www.mongodb.com/download-center/community 创建mongo数据目录 mkdir /data/mongodb 二进制部署 wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x8......

以谁为师
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部