Sqlmap 学习笔记1:sqlmap参数
SQLMP参数分析
1 目录
9、User-defined function options
12、General options
2 学习前提
1、众所周知,sqlmap是一款sql注入工具,其强大功能不再赘述,再次抱着学习的态度,在源码的角度再次学习sqlmap。
首先需要了解sqlmap工作体系:

2 SQLMAP参数
2.1:Target options
-d:

其连接方式为:MYSQL:'mysql://root:123456@127.0.0.1:3306/database_name'
ACCESS:'access://database_filepath'

-u:
设置将要检测sql注入的目标url

-l:
从Burp或WebScarab代理日志文件中解析目标,顾名思义,就是将一个HTTP请求以文件的方式引入sqlmap存而检测注入。
首先获取一个HTTP文件:

然后使用命令:sqlmap -l 路径

-x:
从远程站点地图(.xml)文件中解析目标。此xml格式为:<loc> url </loc>
定义从xml文档获取URL的源码位于:\lib\parse\sitemap.py 20行
例如:xml文档内容
sqlmap使用命令:sqlmap -x localhost/test.xml

-m:
扫描文本文件中给定的多个目标
首先给定一个文本文档:
sqlmap命令:sqlmap -m 路径

-r:
从文件中加载HTTP请求,相当于对POST请求进行sql注入检测。
首先获取一个POST包:

然后使用命令:sqlmap -r 路径

-g:
对谷歌的搜索结果进行SQL注入测试,非常强大的功能。
例如:sqlmap -g "inurl:\".php?id=1\""
-c:
从配置文件中加载选项
2.2:Requests options
--method:
强制使用给定的HTTP方法(例如PUT),顾名思义,就是进行sql检测时使用的HTTP方法。

--data:
要通过POST发送的数据字符串,检测POST注入可以使用此种方法,与 -r 不同的是 --data 只检测其后面的参数是否可以sql注入

--param-del:
用于分割参数值的字符,倘若有多个参数是,分隔符可以为; , 。等,并不一定必须为&

--cookie:
使用cookie。当sqlmap只有在level大于等于2的时候才会检测cookie是否存在注入。所以,当默认情况下,设置此参数并不会检测cookie是否存在注入漏洞。

所以可以构造命令: sqlmap -u "http://localhost/sqli-labs/Less-20/" --cookie "uname=admin" --level 2

--cookie-del: 
类似--param-del参数。用于分割cookie参数,适用于cookie多参数场景

--drop-set-cookie:
从响应中忽略掉 set-cookie 头,这种场景一般是无cookie的情况下才可注入。(个人揣测,并未测试)
构造注入命令:sqlmap -u "URL" --drop-set-cookie
--user-agent:
设置user-agent的值,同cookie注入,需要level大于等于3才可。

--random-agent:
随机使用HTTP用户代理头。
构造SQL注入命令:sqlmap -u "URL" --random-agent -v 5 (加-v参数,可以看到发出的请求与返回的请求,类似--level)
--host:
设置HTTP头中的 host 消息内容。

-H --header :
额外的HTTP头

--referer:
设置HTTP头中的Referer的值。当level大于等于3时会检测此值是否存在SQL注入漏洞。

--headers:
同--header
--auth-type:
HTTP身份验证类型。(不知何用)
--auth-cred:
HTTP授权凭证。猜测用于某些需要登录的场景。
--auth-file:
某些场景需要证书认证时,猜测使用此参数
--ignore-proxy:
忽略系统默认的代理设置
--ignore-redirects:
忽略重定向的尝试
--proxy:
使用代理去连接URL
--proxy-cred:
连接代理需要认证时使用此参数
--proxy-file:
从文件中加载代理列表。此参数非常有用。用于过狗。
--tor:
使用TOR匿名网络,注意一定要安装TOR服务,否则会出错。
--tor-port:
设置TOR匿名网络的代理端口而非默认端口
--delay:
设置每个HTTP请求之间的延迟,默认无延迟
--timeout:
超时连接前等待的时间,个人认为还蛮有用,此参数可以节省一些时间,默认为30秒。
--retries:
设置连接超时后重复连接的次数,默认是3次
--randomize:
设置每次HTTP请求随机改变给定某个参数的值。

--skip-urlencode:
跳过对payload数据的编码。
--eval:
在进行HTTP请求之前执行一段python代码
例如:python sqlmap.py -u "http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"
--threads:
设置最大的并发线程数
2.3:Injection options
-p :
需要测试的参数,加入有2个参数,而只需要检测其中一个参数时,可以使用此参数指定。

--skip:
跳过给定参数的测试。与-p参数意义相反。假如有多个参数,但其中有一个参数不用测试时使用该参数。
--dbms:
选中某个数据库,在已知数据库的情况下,这样做极大的减少测试时间。
假如已知数据库mysql,则构造:sqlmap -u "URL" --dbms mysql
--dbms-cred:
设置数据库的登录凭证。用于某些需要登录数据库的场景。
--os:
指定数据库服务器的操作系统,由于默认情况下,sqlmap会探测服务器操作系统,此参数可以减免此过程。
--invaild-bignum:
当需要指定一个报错的数值时,可以使用此参数,将数值设置很大,存而报错。
--prefix:
对将要进行测试额payload添加前缀

--suffix:
对payload添加指定后缀
--tamper:
使用指定脚本来修改注入的数据,通常用于绕过WAF
2.4:Detection options
--level:
检测等级。默认为1. level 1:只检测GET. POST数据
level 2:检测cookie数据
level 3:检测user-agent,referer的数据
建议检测等级为3
--risk:
风险等级, risk 1:测试大部分的语句
risk 2:会增加基于事件的测试语句
risk 3:会增加OR的语句测试
注意,如果风险等级为3 ,有可能会造成重置所有用户密码,update语句可能会更新整个表。所以请郑重选择。
--string:
在检测注入的过程中,当返回页面差距不大时,可能会导致误判,所以出现此参数,当返回页面与正常页面区别不大时,可以手动指定某个字符串,当匹配到此字符串时,表示存在注入。
--not-string:
与--string相反
--regexp:
通过正则来判断,当通过正则过滤是,则表示存在注入
--code:
通过状态码来进行判断。
--text-only:
仅通过页面内容来比较
--titles:
通过标题内容来比较
2.5:Techniques options
--technique:
sql注入使用哪种类型。默认为全部类型
类型共五种:1,布尔型注入 2,联合查询注入 3,报错注入 4,多语句查询注入(堆叠查询注入) 5,延时盲注
这5中类型分别对应5个大写字母:1,B 2,U 3,E 4,S 5,T

--time-sec:
用于在时间盲注的时候,设置延时时间。默认为5秒
构造命令:

--union-cols:
此参数设置联合查询注入时查询的列数,默认情况下为1-10个字段数,level-5时会增加到50个字段数。此参数在字段大于10但是在默认情况下时出现的问题。
--union-char:
此参数设置联合查询时的字符,默认情况下为NULL,比如:union select null,null,null,null 修改为 union select 1,1,1,1。
--second-order:
此参数用于在注入时返回不同页面的时候,判断返回页面的URL地址来确定是否具有注入。
2.6:Fingerprint options
-f --fingerprint:
使用一个最广泛的DBMS版本指纹
2.7:Enumeration options
-a --all:
检索所有数据,此参数会列出数据库用户,主机名,密码哈希值,是否为管理员,以及所有库,所有表,所有字段和所有的数据,如果一个数据库非常大的话不建议使用,非常消耗时间。

-b --banner:
此参数会列出注入数据库得版本


--current-user:
检索当前数据库的用户


--current-db:
检索当前数据库的数据库名


--hostname:
检索当前数据库服务器的hostname


--is-dba:
检索当前数据库用户是否为管理员


--users:
列举出当前数据库的用户

root不算用户
--password:
列举数据库用户的密码哈希值


--privileges:
列举出数据库用户的权限
--roles:
枚举数据库用户角色(仅适用于数据库为Oracle)
--dbs:
枚举数据库数据库名


--tables:
枚举数据库中的表


--columns:
枚举数据库表中的字段
--schema:
枚举数据库的系统架构
--count:
获取表中数据的个数
--dump-all:
枚举所有数据库表条目
--search:
搜索字段名,表名或者数据库名
共三中模式: 1:--search -D:搜索某个数据库
2:--search -C:搜索某个字段名
3:--search -T:搜索某个表名


-D:
指定某个数据库,与枚举数据参数共同使用。


-T:
指定某个库中的某个表名
建议同-D参数,以及枚举数据参数共同使用。


-C:
指定某个库中表的字段名


-X:
-U:
要枚举的数据库用户
--exclude-sysdbs:
枚举时排除系统表
例如mysql:会排除掉information_schema这个表。
--sql-query:
要执行的sql语句,产生sql注入时执行什么sql语句


--sql-shell:
产生一个交互式的shell


--sql-file:
给定一个文件,执行其中的SQL语句
2.8:Brute force options
--common-tables:
暴力破解表名。1、mysql数据库版本小于5.0
2、使用的是Access数据库
3、当前用户权限不够
--common-columns:
暴力破解列名
2.9:User-defined function options
--udf-inject:
使用用户自定义函数注入
注:UDF注入需要堆栈查询sql注入才可
--shared-lib:
本地共享路径库
2.10:File system options
--file-read:
读取一个文件从后端数据库文件系统
--file-write:
将数据写入数据库服务器文件中
--file-dest:
要写入数据的数据库服务器文件绝对路径
2.11:Takeover options
--os-cmd:
执行系统命令。此参数执行需知网站根目录,为root权限,并且有sys_exec(),sys_eval()函数。于是此参数看似强大,其实鸡肋



--os-shell:
返回一个交互式的shell,同--os-cmd
注:暂时就这些,大多使用的参数都有。其余的参数后续再补。
2.12:General options
-s:
从存储的(.sqlite)文件加载会话。
Sqlmap 学习笔记1:sqlmap参数的更多相关文章
- SQLMAP学习笔记2 Mysql数据库注入
SQLMAP学习笔记2 Mysql数据库注入 注入流程 (如果网站需要登录,就要用到cookie信息,通过F12开发者工具获取cookie信息) sqlmap -u "URL" - ...
- SQLMAP学习笔记1 access注入
SQLMAP学习笔记1 access注入 Sqlmap是开源的自动化SQL注入工具,由Python写成,具有如下特点: 完全支持MySQL.Oracle.PostgreSQL.Microsoft S ...
- golang学习笔记8 beego参数配置 打包linux命令
golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/mvc/contro ...
- 4.羽翼sqlmap学习笔记之Post登录框注入
4.Sqlmap系列教程——post登录框注入注入点: http://xxx.xxx.com/Login.asp 注入方式一: 1.对着注入点使用burp抓包,保存txt格式文件. 2.输入命令: . ...
- sqlmap学习笔记
SQLmap 神仙工具Orz.需要安装python2.7环境. 语法 -u 指定url --is-dba 查询是否为数据库管理员(database administrator) --dbs 查询数据库 ...
- 3.羽翼sqlmap学习笔记之Cookie注入
Cookie注入: 1.假设这个网址"http://www.xxx.org/Show.asp?id=9"存在注入点.2.sqlmap命令提示符下输入下列内容进行跑表. sqlmap ...
- 2.羽翼sqlmap学习笔记之MySQL注入
1.判断一个url是否存在注入点: .sqlmap.py -u "http://abcd****efg.asp?id=7" -dbs 假设找到数据库:student ------- ...
- 1.羽翼sqlmap学习笔记之Access注入
使用sqlmap工具进行Acces注入:1.判断一个url是否存在注入点,根据返回数据判断数据库类型: .sqlmap.py -u "http://abcd****efg.asp?id=7& ...
- jquery插件 - 学习笔记 (插件参数及函数的调用)
今天研究的是jquery插件的基本写法: 比如我打算写一个名为 ImageZoom 的插件 前台调用: <script src="ImageZoom.js"></ ...
随机推荐
- 简单几步就能把素材变成大片?老司机推荐Vegas
"素材编辑"一般分为两种,一种是对时间线素材长度和位置的编辑,另一种就是遮罩法操作. 第一种,裁剪素材(将素材在我们选定的位置一分为二),对时间线上的素材进行裁剪,有两种方法: 一 ...
- 微课制作软件Camtasia,来为视频添加预设动画效果
之前已介绍过使用微课制作软件Camtasia为视频添加"缩放和平移"动画的教程以及"效果按钮"的使用. 此篇内容,我们就来介绍使用录像编辑软件--Camtasi ...
- 如何使用Camtasia进行电脑录制屏幕
在现在的网络互联网时代,越来越多的人走上了自媒体的道路.有些自媒体人会自己在网络上录制精彩视频,也有一些人会将精彩.热门的电影剪辑出来再加上自己给它的配音,做成大家喜欢看的电影剪辑片段.相信不管大家是 ...
- 【VUE】2.渲染组件&重定向路由
1.删除多余组件,使环境赶紧 1. 整理App.vue, 删除多余内容,在template 模板区域增加一个路由占位符 router-view:渲染路径匹配到的视图组件 <template> ...
- Redis 基础设计结构之三 hash(哈希)
Redis 有 5 种基础数据结构,分别为:string (字符串).list (列表).set (集合).hash (哈希) 和 zset (有序集合). 今天来说一下hash(哈希),hash的数 ...
- web服务器是啥
什么是web服务器 参考 https://www.cnblogs.com/zhaoyl/archive/2012/10/10/2718575.html 了解nginx之前,先了解下什么是web服务器吧 ...
- LeetCode 042 Trapping Rain Water
题目要求:Trapping Rain Water Given n non-negative integers representing an elevation map where the width ...
- Feign 超时设置
问题描述 微服务之间使用 Feign 调用,偶发超时问题,配置如下: feign: client: config: default: connectTimeout: 10000 readTimeout ...
- PyQt学习随笔:Model/View设计中支持View中展示数据的排序
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在model/view架构中,有两种方法可以实现排序,选择哪种方法依赖于底层Model.如果mode ...
- PyQt(Python+Qt)学习随笔:exit code 1073741845与槽函数所在对象不能定义同名实例方法问题
最近做了几次测试,在PyQt中如果使用与槽函数同名的实例方法可能会导致不可控的错误. 案例1:如果两个信号映射到同名的槽函数,虽然参数不一样,但真正响应的槽函数是最后定义的槽函数,具体案例请见< ...