SQLMP参数分析

1 目录

    1、Target Options

    2、Requests Options

    3、Injection Options

    4、Detection Options

    5、Techniques Options

    6、Fingerprint options

    7、Enumeration options

    8、Brute force options

    9、User-defined function options

    10、File system options

    11、Takeover 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参数的更多相关文章

  1. SQLMAP学习笔记2 Mysql数据库注入

    SQLMAP学习笔记2 Mysql数据库注入 注入流程 (如果网站需要登录,就要用到cookie信息,通过F12开发者工具获取cookie信息) sqlmap -u "URL" - ...

  2. SQLMAP学习笔记1 access注入

    SQLMAP学习笔记1  access注入 Sqlmap是开源的自动化SQL注入工具,由Python写成,具有如下特点: 完全支持MySQL.Oracle.PostgreSQL.Microsoft S ...

  3. golang学习笔记8 beego参数配置 打包linux命令

    golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/mvc/contro ...

  4. 4.羽翼sqlmap学习笔记之Post登录框注入

    4.Sqlmap系列教程——post登录框注入注入点: http://xxx.xxx.com/Login.asp 注入方式一: 1.对着注入点使用burp抓包,保存txt格式文件. 2.输入命令: . ...

  5. sqlmap学习笔记

    SQLmap 神仙工具Orz.需要安装python2.7环境. 语法 -u 指定url --is-dba 查询是否为数据库管理员(database administrator) --dbs 查询数据库 ...

  6. 3.羽翼sqlmap学习笔记之Cookie注入

    Cookie注入: 1.假设这个网址"http://www.xxx.org/Show.asp?id=9"存在注入点.2.sqlmap命令提示符下输入下列内容进行跑表. sqlmap ...

  7. 2.羽翼sqlmap学习笔记之MySQL注入

    1.判断一个url是否存在注入点: .sqlmap.py -u "http://abcd****efg.asp?id=7" -dbs 假设找到数据库:student ------- ...

  8. 1.羽翼sqlmap学习笔记之Access注入

    使用sqlmap工具进行Acces注入:1.判断一个url是否存在注入点,根据返回数据判断数据库类型: .sqlmap.py -u "http://abcd****efg.asp?id=7& ...

  9. jquery插件 - 学习笔记 (插件参数及函数的调用)

    今天研究的是jquery插件的基本写法: 比如我打算写一个名为 ImageZoom 的插件 前台调用: <script src="ImageZoom.js"></ ...

随机推荐

  1. Word 2013中如何直接调用MathType

    相信有很多用户已经发现在使用Word 2013编辑文档时MathType无法直接调用,但是点击文档中的公式时能够跳出MathType公式编辑窗口,那么这是怎么回事呢?其实,这一问题也不是没有办法解决的 ...

  2. Vegas媒体生成器是什么,有什么作用

    在专业视频剪辑软件-Vegas的界面中,有一个媒体生成器的界面,此界面包含HitFilm Light Flares,Pro Type Titler,测试图案,纯色,棋盘格,色彩渐变,噪声纹理,致谢字幕 ...

  3. jQuery 第二章 实例方法 DOM操作取赋值相关方法

    取赋值相关方法:  .html() .text() .val() .size() .addClass() .removeClass() .hasClass() .html() html方法干嘛的呢,底 ...

  4. ios开发中如何调用苹果自带地图导航

    前段时间一直在赶项目,在外包公司工作就是命苦,天天加班不说,工作都是和工期合同挂钩的,稍微逾期就有可能被扣奖金,不谈这些伤脑筋的事情了,让我们说说iOS开发中如何调用苹果手机自带的地图. 学习如逆水行 ...

  5. 聊聊 传统IO和网络IO

    IO 模型 传统 IO读写        磁盘IO主要的延时是由(以15000rpm硬盘为例): 机械转动延时(机械磁盘的主要性能瓶颈,平均为2ms) + 寻址延时(2~3ms) + 块传输延时(一般 ...

  6. Linux服务器学习----haproxy+keepalived

    实验需要4台虚拟机,两台做服务器,两台做代理服务器 www1:ip:10.30.40.11       hk1: 代理:10.30.40.13(hk1.netdj.net) www2:ip  10.3 ...

  7. 锐安信sslTrus与GeoTrust SSL证书的对比

    当您想要为您的网站购买一款SSL证书时,是不是既想要价格便宜,又想要安全性能服务好的证书,最后又在品牌上犹豫不决?如何选择SSL证书?哪款SSL证书是最适合您的?本文将详细对比分析锐成信息平台上畅销品 ...

  8. 以前一个个文件删数据的我,今天终于找到了释放C盘空间的办法

    这是我刚刚清理的C盘,亲测有效!无需安装清理空间的软件,我的电脑品牌是华硕. win10的电脑应该都有搜索功能,如果没有开启,可以鼠标右键点击任务栏. 弹出菜单找到[搜索]-[显示搜索图标],勾选即可 ...

  9. DockerFile理解与应用

    1.DockerFile是什么? DockerFile是用来构建Docker镜像的构建文件,一般分为四部分:基础镜像信息.维护者信息.镜像操作指令和容器启动时执行指令,'#' 为 Dockerfile ...

  10. PyQt(Python+Qt)学习随笔:QMainWindow的takeCentralWidget对QDockWidget作用案例图解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QMainWindow的takeCentralWidget方法作用是将 ...