一款开源的命令行自动SQL注入工具,它能够对多种主流数据库进行扫描支持,基于Python环境。

检测动态页面中get/post参数,cookie,http头

数据榨取/文件系统访问

操作系统命令执行

引擎强大,特性丰富

xss检测

支持主流的数据库

五种漏洞检测技术:

基于布尔的盲注检测

基于时间的盲注检测( 'and (select(sleep(20)))a)-- )

基于错误的检测

基于union联合查询的检测(适用于通过循环直接输出联合查询结果,否则只显示第一项结果)

基于堆叠查询的检测(;堆叠多个语句,适用于非select的数据修改,删除的操作)

其他特性:

数据库直接连接 -d(不通过sql注入,制定身份认证信息,ip,端口)

与burp,google结合使用,支持政策表达式限定测试目标

get,post,cookie,refere,user-agent(随机或指定)

支持basic,digest,ntml,ca身份认证

数据库版本,用户,权限,hash枚举和字典破解,暴力破解表列名称

文件上传下载,udf,启动并执行存储过程,操作系统命令执行,访问windows注册表

与metasploit集成结合使用,基于数据服务进程提权和上传执行后门

Target:
-d:直接连接数据库服务器,作为数据库客户端使用
-u:后面跟URL地址,最好用双引号括起来,一定要存在变量名称
-l:logfile,将Burpsuite或WEbScarab代理记录的log日志文件提交上来
-x:sitemapurl,将站点地图sitemap文件提交上来
-m:将有多个URL的文件提交上来进行扫描
-r:提交HTTP request信息的文件
-g:用Google去搜索
-c:提交配置文件

实例:

-p参数只对指定的参数进行注入,在上述命令中指定了对username参数进行注入

-f参数查看指纹信息

GET方法

sqlmap -u "http://192.168.1.12/mutillidae/index.php?page=user-info.php&username=1&password=2&user-info-php-submit-button=View+Account+Details" -p username -f


查询的结果会保存在log文件中,位于一个root下的隐藏目录.sqlmap,可以进入查看相应的信息

--users:查看当前数据库所有用户
将注入命令的-f参数改为--users参数,确定过有注入点所以后面的执行速度会很快

--banner:查看数据库版本信息

--dbs:查看目标数据库系统的所有库

--schema:查看元数据库,查看到的信息会很多

-a:所有数据都查找

-m:将有多个URL的文件提交上来进行扫描

-g参数,扫描Google搜索结果

POST方法:

简单判断POST方法的方法,输入的参数内容提交后没有出现在URL中,而GET方法中会出现。
使用http request文件,可通过Burpsuite抓取

使用Burpsuite的log文件

在Options>Misc>Logging

sqlmap -r reuqset.txt

sqlmap -l xx-log

--force-ssl:扫描HTTPS网站时需要添加参数

-c:扫描配置文件

Request:

--data数据段:将URL中的参数部分放到后面

GET/POST都适用,在GET方法中将URL后面的参数部分提取出来就好,在POST方法中需要自己用Burpsuite查看URL和参数的值即可,当然也可以在浏览器中F12打开开发者工具来查看

--param-del:变量分隔符,默认情况下参数变量的分隔符为&,若为其他符号时要使用变量分隔符。

--cookie:Cookie头,因为DVWA进入之前需要登录,即要有cookie,所以在对DVWA进行sqlmap查询时需要用到cookie参数。同样,cookie值用Burpsuite可以很方便地查看。

sqlmap会自动检查cookie中的注入点,level至少为2,通过--level 2来执行

Sqlmap会自动检查Set-cookie并更新,若想保留之前使用是用--drop-set-cookie

--user-agent:随机user-agent

Sqlmap检查user-agent的注入点,level>=3

--host:修改Host头主机内容(Level=5时sqlmap自动扫描)

--referer:Level>=3时sqlmap自动扫描

--headers:自定义的HTTP头,每行一个头,大小写区分:

--method=GET/POST:指定使用GET方法或者POST方法

基于HTTP协议的身份验证:
Basic:基本身份验证
Digest:摘要身份验证
NTLM:Windows可能用的身份验证

--delay:每次http(s)请求之间延迟时间,浮点数,单位为秒,默认为无延迟
--timeout:请求超时时间,浮点数,默认为30s
--retries:http(s)连接超时重试次数,默认3次
delay、timeout和retries等参数的设置可有利于避免被发现
--randomize:长度、类型与原始值保持一致的前提下,指定每次请求随机取值的参数名

--safe-url和--safe-freq:因为检测和盲注阶段会产生大量失败请求,服务器可能会销毁session。因此可以使用上述两个参数来解决,每发送--safe-freq次注入请求后,发送一次正常请求,即发送几个失败请求后就发送一次正常信息,绕过服务器的检测机制

--safe-url和--safe-freq:因为检测和盲注阶段会产生大量失败请求,服务器可能会销毁session。因此可以使用上述两个参数来解决,每发送--safe-freq次注入请求后,发送一次正常请求,即发送几个失败请求后就发送一次正常信息,绕过服务器的检测机制

Optimization优化性能:

--predict-output:与--threads参数不兼容,根据检测方法,将返回值跟统计表中的内容进行比较,缩小检测范围,提高效率,统计表在/usr/share/sqlmap/txt/common-outputs.txt,其中有版本名、用户名、密码、权限、角色、数据库名、表名、列名等等

--keep-alive:使用http(s)长连接,避免重复建立连接的网络开销,但大量长连接会严重占用服务器资源,与--proxy参数不兼容

--null-connection:常用于盲注判断,只获取相应页面的大小值,而不是页面的具体内容,降低了网络带宽消耗,与--text-only参数不兼容(也常用于盲注,基于页面内容的比较判断真假)

-o:同时使用--predict-output、--keep-alive和--null-connection三个参数

--threads:最大并发线程,默认值为1,建议不要超过10,否则会影响站点可用性,与--predict-output参数不兼容,盲注时每个线程获取一个字符(7次请求),获取完成后线程结束

Injection:

-p:指定扫描的参数,其他的参数的注入不会进行,使--level失效

--skip:排除指定的扫描参数

--level=5 --skip=”id,user-agent”

URI注入点:

sqlmap -u “http://1.1.1.1/param1/value1*/param2/value2/”

--dbms:指定数据库,可以加版本号,提高注入的效率,数据库名如MySQL<5.0>、Oracle<11i>、Microsoft SQL Server<2005>、PostgreSQL等

--os:指定目标操作系统,提高效率,如Linux、Windows

--invalid-bignum / --invalid-logical:默认情况下,sqlmap使用赋值使参数值失效,Bignum使用大数使参数值失效,Logical使用布尔判断使参数值失效

--no-cast:默认情况下,sqlmap榨取数据时会将所有结果转换为字符串,并用空格替换NULL结果,老版本mysql数据库对此提取不到数据,因而需要该参数取消这个默认处理方式

--no-escape:默认情况下,当payload中有单引号括起字符串时,为了避免混淆和出错,sqlmap使用char()函数编码来替换字符串,但有些服务器对于编码数据的处理会出错,而这时就需要该参数来关闭此功能

--tamper:混淆脚本,用于绕过应用层过滤、IPS、WAF,查看脚本:dpkg -L sqlmap | grep tamper

Detection:

--level:1-5级,默认为1
每个级别发送不同的xml类型的payload:/usr/share/sqlmap/xml/payloads

--risk:1-4级,默认为1、无害
Risk升高可造成数据被篡改等风险

--string / --not-string:指定出现的字段或指定不出现的字段判断真假

--regexp:正则表达式

--code:指定HTTP返回代码判断真假

--text-only:指定页面的一段内容判断真假

--titles:指定页面的标题判断真假

Techniques:

默认使用全部技术

B:基于布尔的盲注漏洞

E:基于错误的检测

U:基于UNION联合查询的检测

S:基于堆叠查询的检测(文件系统、操作系统、注册表必须)

T:基于时间的盲注漏洞

--time-sec:基于时间的注入检测相应的延迟时间,默认为5s

--union-cols:默认联合查询1-10列,随--level增加最多支持50列,--union-cols 6-9

--union-char:默认NULL,可以手动指定数值:--union-char 123

--dns-domain:攻击者控制了一台DNS服务器,使用该参数可提高数据榨取的速度

--second-order:不同的情况:在一个页面注入的结果,从另一个页面体现出来(--second-order http://192.168.1.12/b.php)

Fingerprint:

-f、--fingerprint、-b、--banner:查看数据库管理系统指纹信息、DBMS、操作系统、架构、补丁

Enumeration枚举:

--current-user:查看当前数据库管理系统用户

--current-db:查看当前数据库

--hostname:查看目标主机名

--users:查看数据库管理系统所有用户账号

--privileges -U username:查看用户权限,CU为当前用户

--roles:查看角色

--dbs:查看所有数据库

--tables:查看表

--exclude-sysdbs:排除系统数据库的查询

--count:计算该项的数目

--schema:查看元数据库
 
--batch:参数采用默认选项,不进行询问

--dump-all查看全部

Brute Force:

无权读取information_schema库时,需要用到暴力破解来扫描

--common-tables:暴力破解表名

--common-columns:暴力破解列名

OS:

--os-cmd:执行一条命令,前提是当前用户有权执行

--os-shell:获取一个shell,前提是当前用户有权执行

--sql-shell:获取sql-shell,前提是当前用户有权执行

友情链接 http://www.cnblogs.com/klionsec

http://www.cnblogs.com/l0cm

http://www.cnblogs.com/Anonyaptxxx

http://www.feiyusafe.cn

kali linux之sqlmap的更多相关文章

  1. Kali Linux渗透基础知识整理(三):漏洞利用

    漏洞利用阶段利用已获得的信息和各种攻击手段实施渗透.网络应用程序漏洞诊断项目的加密通信漏洞诊断是必须执行的.顾名思义,利用漏洞,达到攻击的目的. Metasploit Framework rdeskt ...

  2. Kali Linux Web 渗透测试视频教程— 第十三课-密码破解

    Kali Linux Web 渗透测试— 第十三课-密码破解 文/玄魂 目录 Kali Linux Web 渗透测试— 第十三课-密码破解............................... ...

  3. Kali Linux Web 渗透测试视频教程—第十一课-扫描、sql注入、上传绕过

    Kali Linux Web 渗透测试视频教程—第十一课-扫描.sql注入.上传绕过 文/玄魂 原文链接:http://www.xuanhun521.com/Blog/2014/10/25/kali- ...

  4. kali linux宿主机和虚拟机互访实现方案

    1.攻防模拟中,将DVWA安装到自己的宿主机中,在kali Linux中通过sqlmap和其他工具启动嗅探攻击,需要配置网络.虚拟机采用桥接方式,并复制Mac地址状况. 2.查看各自系统下的IP地址. ...

  5. 龙灵:特邀国内第一讲师“玄魂” 在线培训黑客神器Kali Linux

         如何成长为黑客.白帽子.网络工程师.渗透工程师?      国内这类型精英人才,大部分都是自学成才.他们成长的路上充满艰辛,还有更为漫长的学习过程.当然,幸运儿以外的大部分爱好者,被知识门槛 ...

  6. Kali Linux 工具清单

    Kali Linux 工具清单 Information Gathering acccheck ace-voip Amap Automater bing-ip2hosts braa CaseFile C ...

  7. MetaSploit攻击实例讲解------Metasploit自动化攻击(包括kali linux 2016.2(rolling) 和 BT5)

    不多说,直接上干货! 前期博客 Kali linux 2016.2(Rolling)里Metasploit连接(包括默认和自定义)的PostgreSQL数据库 Kali linux 2016.2(Ro ...

  8. kali linux下的arp攻击

    这是我第一篇博客,写的不好请谅解 ____________________________(分割线)_______________________________ 在kali linux系统下自带工具 ...

  9. kali linux之窥看女神上网隐私(ettercap+wireshark+zenmap +dsniff)

    作者:小波 http://www.cnblogs.com/xiaobo-Linux/ 无聊就玩了玩,不要干一些坏事哟~~网上也有一些文章关于kali linux的,就实战了一番.kali是用的debi ...

随机推荐

  1. SDRAM 之时序收敛(学习了特权老师)

    到现在我还是不太理解SDRAM的时序设置,但是可能蒙对了.(呵呵) 开发环境: quartus II 13.0   板子: DE2 EP2C35F672C6N 时序约束step 1:create cl ...

  2. python's twenty day for me 继承 和 super()方法

    super(): 在单继承中就是单纯的寻找父类. 在多继承中就是根据子节点所在图 的mro顺序,找寻下一个类. 遇到多继承和super(): 对象.方法 1,找到这个对象对应的类. 2,将这个类的所有 ...

  3. mongodb基本操作和在springboot中的使用

    本文介绍mongodb的使用 说明 起步 mongo通用类型 mongoshell的操作 CRUD操作 shell命令操作 索引操作 mongo在springboot中的使用 目录结构 依赖 prop ...

  4. .NET 调用c++库注意事项

    很久没有更新了,主要还是因为自己懒吧,希望从今天开始坚持至少一周写一篇文章. 调用函数库是正常的,调用完成后,在使用EF进行数据更新时,将发生如下异常信息,而且几乎必现. 行库遇到了错误.此错误的地址 ...

  5. Functions & Closures

    [Functions] 1.不带返回值的函数: 2.通过tuple返回元素 返回的tuple可按如下方式使用: 3.External Parameter: External parameter的使用: ...

  6. Leetcode:Substring with Concatenation of All Words分析和实现

    题目大意是传入一个字符串s和一个字符串数组words,其中words中的所有字符串均等长.要在s中找所有的索引index,使得以s[index]为起始字符的长为words中字符串总长的s的子串是由wo ...

  7. codeforce 457DIV2 B题

    题意:  题目给出两个整数n,k,(n<=10^18,k<=10^5),求一个含有k个整数的序列,要求以2为底,以序列内数字为幂的和为n,其中序列内最大的数最小,若有多个序列满足条件,输出 ...

  8. os.chdir("/deepmatching") OSError: [Errno 2] No such file or directory: '/deepmatching'

    #os.chdir("/deepmatching")os.chdir(os.path.dirname(os.path.abspath("deepmatching1&quo ...

  9. 什么是Kali Linux?

    什么是Kali Linux? Kali Linux是一个基于Debian的Linux发行版,旨在实现高级渗透测试和安全审计.Kali包含数百种工具,适用于各种信息安全任务,如渗透测试,安全研究,计算机 ...

  10. Solidity 没名字的function(){...}作用

    官方解释: 这个叫做fallback function,当有人 1. 只发送以太币给合约而不带任何输入数据:2. 调用smart contract时调起了一个不存在的方法.会触发执行这个方法. Wha ...