登录后更精彩...O(∩_∩)O...
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Sqlmap工具使用总结
1. 免责声明 本文提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途。 2. 内容速览 sqlmap安装sqlmap是一款开源免费的漏洞检查、利用工具. - 可以检测页面中get,post参数,cookie,http头等.
- 可以实现数据榨取
- 可以实现文件系统的访问
- 可以实现操作命令的执行
- 还可以对xss漏洞进行检测
基本上可以说 安全从业人员必备的一款神器之软件.也是迈入安全圈的必要条件.
如下图,我们已经可以使用sqlmap了 :
sqlmap使用
简单使用流程 我在本地搭建了一个sqlilabs的环境,访问如下图
使用sqlmap测试是否存在注入点,所用参数 -u-->代表url python sqlmap.py -u http://127.0.0.1/sql/sqli/Less-1/?id=1复制
sqlmap探测到布尔盲注,时间盲注和联合查询
获取MySQL中的 数据库名称,使用命令 --dbs python sqlmap.py -u http://127.0.0.1/sql/sqli/Less-1/?id=1 --dbs
通过 '-D' 指定数据库,--tables查询数据表
通过 '-T' 指定数据表,--columns查询字段名称
通过--dump获取数据
sqlmap的基础命令(常用) - -u:指定被扫描的url
- -b:获取banner信息
- --is-dba:是否是管理员权限
- --current-db:当前数据库
- --current-user:当前用户
- --dbs:列举数据库
- --tables:列举数据库的表名
- --count:检索所有条目数
- --columns:获取表的列名
- --dump:获取表中的数据,包含列
- -v:显示详细信息
sqlmap进阶命令(常用) - --level:测试等级(1-5),默认为1。大于2时,会检测cookie注入;大于3时,会检测头注入
- --risk:执行测试的风险(0-3,默认为1)。risk越高,检测越慢越安全
- --technique:指定注入类型。B->布尔注入;E->报错注入;U->联合查询;T->延时注入;S->堆叠查询
- --time-sec :DBMS响应的延迟时间(默认为5秒)
- --proxy:使用代理服务器连接到目标URL
- --cookie:指定cookie
- --user-agent:指定请求头。默认情况下sqlmap的HTTP请求头中User-Agent值是:sqlmap/1.0-dev-xxxxxxx(http://sqlmap.org)
- --random-agent:从./txt/user-agents.txt中获取随机获取请求头
- --method:强制使用给定的HTTP方法
- --safe-freq:测试一个给定安全网址的两个访问请求
- --delay:可以设定两个HTTP(S)请求间的延迟,设定为0.5的时候是半秒,默认是没有延迟的
- --timeout:可以设定一个HTTP(S)请求超过多久判定为超时,10表示10秒,默认是30秒
- --dbms:指定数据库。mysql、oracle、mssql等
- --os:指定操作系统
- --os-shell:获取一个shell,根据网站的语言
sqlmap所有命令 所有命令请参考如下脑图:
sqlmap中的tamper 挂在嘴边的一句话,sqlmap绕waf,所用到的模块就是tamper,所用命令 --tamper=xxxxx 先来看一下,sqlmap中的tamper文件夹下有哪些文件 [td] | | | 1
| 0x2char
| 将每个编码后的字符转换为等价表达
| 2
| apostrophemask
| 单引号替换为Utf8字符
| 3
| apostrophenullencode
| 替换双引号为%00%27
| 4
| appendnullbyte
| 有效代码后添加%00
| 5
| base64encode
| 使用base64编码
| 6
| between
| 比较符替换为between
| 7
| bluecoat
| 空格替换为随机空白字符,等号替换为like
| 8
| chardoubleencode
| 双url编码
| 9
| charencode
| 将url编码
| 10
| charunicodeencode
| 使用unicode编码
| 11
| charunicodeescape
| 以指定的payload反向编码未编码的字符
| 12
| commalesslimit
| 改变limit语句的写法
| 13
| commalessmid
| 改变mid语句的写法
| 14
| commentbeforeparentheses
| 在括号前加内联注释
| 15
| concat2concatws
| 替换CONCAT为CONCAT_WS
| 16
| equaltolike
| 等号替换为like
| 17
| escapequotes
| 双引号替换为\\
| 18
| greatest
| 大于号替换为greatest
| 19
| halfversionedmorekeywords
| 在每个关键字前加注释
| 20
| htmlencode
| html编码所有非字母和数字的字符
| 21
| ifnull2casewhenisnull
| 改变ifnull语句的写法
| 22
| ifnull2ifisnull
| 替换ifnull为if(isnull(A))
| 23
| informationschemacomment
| 标示符后添加注释
| 24
| least
| 替换大于号为least
| 25
| lowercase
| 全部替换为小写值
| 26
| modsecurityversioned
| 空格替换为查询版本的注释
| 27
| modsecurityzeroversioned
| 添加完整的查询版本的注释
| 28
| multiplespaces
| 添加多个空格
| 29
| nonrecursivereplacement
| 替换预定义的关键字
| 30
| overlongutf8
| 将所有字符转义为utf8
| 31
| overlongutf8more
| 以指定的payload转换所有字符
| 32
| percentage
| 每个字符前添加%
| 33
| plus2concat
| 将加号替换为concat函数
| 34
| plus2fnconcat
| 将加号替换为ODBC函数{fn CONCAT()}
| 35
| randomcase
| 字符大小写随机替换
| 36
| randomcomments
| /**/分割关键字
| 37
| securesphere
| 添加某字符串
| 38
| sp_password
| 追加sp_password字符串
| 39
| space2comment
| 空格替换为/**/
| 40
| space2dash
| 空格替换为–加随机字符
| 41
| space2hash
| 空格替换为#加随机字符
| 42
| space2morecomment
| 空格替换为/_/
| 43
| space2morehash
| 空格替换为#加随机字符及换行符
| 44
| space2mssqlblank
| 空格替换为其他空符号
| 45
| space2mssqlhash
| 空格替换为%23%0A
| 46
| space2mysqlblank
| 空格替换为其他空白符号
| 47
| space2mysqldash
| 空格替换为–%0A
| 48
| space2plus
| 空格替换为加号
| 49
| space2randomblank
| 空格替换为备选字符集中的随机字符
| 50
| symboliclogical
| AND和OR替换为&&和
| 51
| unionalltounion
| union all select替换为union select
| 52
| unmagicquotes
| 宽字符绕过GPC
| 53
| uppercase
| 全部替换为大写值
| 54
| varnish
| 添加HTTP头
| 55
| versionedkeywords
| 用注释封装每个非函数的关键字
| 56
| versionedmorekeywords
| 使用注释绕过
| 57
| xforwardedfor
| 添加伪造的HTTP头
|
Options(选项) -h:帮助文档 --version:查看sqlmap版本信息 -v:显示详细信息 ·0:只显示python的错误和一些严重性的信息 ·1:显示基本信息(默认) ·2:显示debug信息 ·3:显示注入过程的payload ·4:显示http请求包 ·5:显示http响应头 ·6:显示http响应页面 Target(目标)- -d:直接连接数据库(格式:‘mysql://USER
ASSWORD@DBMS_IP BMS_PORT/DATABASE_NAME’)

- -u:指定url扫描,但url必须存在查询参数. 例: xxx.php?id=1

l:后面跟一个log文件,判断log(日志)文件中所有记录是否存在注入点(用于多个url)- m:后面跟一个txt文件,判断txt文件中所有记录是否存在注入点(用于多个url)

- -r:检查post请求是否存在注入(可以通过抓包工具抓取包,把请求保存在一个文档中,不限制文档后缀)。

Request(请求)--method:指定请求是提交的方法。如 --method=GET( --method=POST)
注解:一般来说,Sqlmap能自动判断出是使用GET方法还是POST方法,但在某些情况下需要的可能是PUT等很少见的方法,此时就需要用参数“–method”来指定方法。如:“–method=PUT”。
--data: 该参数指定的数据会以POST方式进行提交,Sqlmap也会检测该参数指定数据是否存在注入漏洞。(格式: --data = “参数1 & 参数2…”)
注解:get/post提交的都适用(地址栏或者表单);可以只提交一个参数。
[color=rgba(0, 0, 0, 0.75)] --param-del: 当用其他字符分割参数的时候,需要用到此参数(针对data)。
[color=rgba(0, 0, 0, 0.75)] --cookie:该参数用于绕过登录验证。 (格式: --cookie = “参数1 ; 参数2…”)
注解:可以只包含一个参数;要检测cookie的注入点,则需要level >= 2。
- --cookie-del:当用其他字符分割参数的时候,需要用到此参数(针对cookie)。
- --user-agent: sqlmap默认的user-agent是sqlmap/1.5.11.5#dev (https://sqlmap.org)(这是我的),这样容易被目的主机所察觉,所以需要修改user-agent。
注解:要检测user-agent的注入点,则需要level >= 3。
- --random-agent: user-agent可能不是特别容易记住,所以在安装目录\sqlmap-master\data\txt下有一个user-agents.txt文件,保存着大量的user-agent,而这个参数就是在这个文件中随机选择一个。
- --host: 用来指定http请求报文中host的值
注解:要检测host的注入点,则需要level = 5。不过这里一般很少有漏洞信息。
- --proxy: 用于代理,在本主题的最后有给出一个具体详例
[color=rgba(0, 0, 0, 0.75)] - --proxy-cred:用于代理认证,个人感觉就是你让别人(代理商)做事情,别人想要收费,然后你缴费,别人给你一个账号和密码(用于认证),证明你可以让它为你做事情。(格式为:--proxy-cred="name:password")
注解:proxy-cred要与proxy配合使用
--timeout:设置请求超时的时间,单位是秒,默认是30。(格式:--timeout=50) --retries: 设置超时从新连接的次数,默认是3次。(格式: --retries=5) 这些选项可以用来指定如何连接到目标URL,换句话说就是用来修改http请求报文的内容的 这些选项在输入时不要输入多余的空格(也就是说在等于号左右两边不要加空格!!!) proxy=“http://127.0.0.1:8080” :在命令行添加这一行可以使用burp进行抓包查看。下面给出例子 python sqlmap.py “http://sql.test/Less-1/?id= 1” --data=“user = 1”
参考文章:
1. https://cloud.tencent.com/developer/article/1938544
2. https://blog.csdn.net/weixin_46962006/article/details/121307150
|