找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 51|回复: 0

☆ Sqlmap工具使用总结

[复制链接]

2万

主题

128

回帖

10万

积分

管理员

积分
105860
发表于 2022-5-24 20:51:32 | 显示全部楼层 |阅读模式 IP:山东省青岛市 移动

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Sqlmap工具使用总结

1. 免责声明
本文提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途。
2. 内容速览
sqlmap安装
sqlmap是一款开源免费的漏洞检查、利用工具.
  • 可以检测页面中get,post参数,cookie,http头等.
  • 可以实现数据榨取
  • 可以实现文件系统的访问
  • 可以实现操作命令的执行
  • 还可以对xss漏洞进行检测
基本上可以说 安全从业人员必备的一款神器之软件.也是迈入安全圈的必要条件.
1.png

sqlmap的github项目地址:https://github.com/sqlmapproject/sqlmap/  
sqlmap的官网地址:https://sqlmap.org/
sqlmap需要python环境:https://www.python.org/downloads/

如下图,我们已经可以使用sqlmap了 :
2.png

sqlmap使用

简单使用流程
我在本地搭建了一个sqlilabs的环境,访问如下图


3.png
使用sqlmap测试是否存在注入点,所用参数 -u-->代表url
python sqlmap.py -u http://127.0.0.1/sql/sqli/Less-1/?id=1复制
4.png

sqlmap探测到布尔盲注,时间盲注和联合查询
5.png
获取MySQL中的数据库名称,使用命令 --dbs
python sqlmap.py -u http://127.0.0.1/sql/sqli/Less-1/?id=1 --dbs


6.png

通过 '-D' 指定数据库,--tables查询数据表


7.png


通过 '-T' 指定数据表,--columns查询字段名称
8.png
通过--dump获取数据
9.png
10.png
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所有命令
所有命令请参考如下脑图:
11.png
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://USERASSWORD@DBMS_IPBMS_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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|IOTsec-Zone|在线工具|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-5-18 16:52

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表