渗透工具-SQL注入-SQLMap项目梳理

Posted 南瓜__pumpkin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了渗透工具-SQL注入-SQLMap项目梳理相关的知识,希望对你有一定的参考价值。

温故而知新,访问 官网,下载最新版本 1.5.8。

概述8个目录文件

目录文件中,.github、extra、thirdparty 三个目录先不看,lib目录在审计源码时才看,有4个目录当作重点仔细看看。

1.doc目录,主要包含软件说明文档。

2.plugins插件库,例如:在使用sqlmap连接数据库的时候需要用到其中的一些不同数据库的python连接类,以及各种数据库的信息和数据库通用事项等

3.tamper脚本,包含了64个绕过脚本,例如:编码绕过,注释绕过等等

4.data 这个目前在老版本的sqlmap中是没有的,在目前最新版本的1.4.5.28中存在 ,其实也没有变什么就是把原来的部分文件夹移动到了这个data文件夹里面,目前data文件夹里面有如下文件夹:
html, procs, shell, txt, udf, xml
html 里面有个index.html文件,打开是关于sqlmap的各种选项
procs 包含了mssqlserver、 mysql、oracle和postgresql的触发程序,存放了一些SQL语句,主要涉及DNS带外传输数据的一些数据库命令
shell 注入成功时使用的 4 种shell,这些shell是经过加密的
txt 包含一些字典,例如:用户浏览器代理,表,列,和关键字等
udf UDF提权用的dll或者so文件,包含了用户自己自定义的攻击Payload
xml 包含了多种数据库的注入检测载荷、旗标信息以及其他信息。

另外4个目录说明
.github代码管理目录
lib封装方法,包含了sqlmap的多种连接库
extra额外功能,例如发出声响(beep)、运行cmd、安全执行、shellcode等
thirdparty第三方的插件,例如优化、保持连接、颜色等。

详细说明4个重点目录

软件说明doc

最好看的是软件说明,其次才是软件架构和执行流程。doc文档有两个有意思的文档,分别是软件说明和第三方插件说明,这次看看软件说明书。

文件说明
doc/translations/README-zh-CN.md软件说明书
doc/THIRD-PARTY.md第三方插件说明

软件说明给出了项目的 Wiki地址,打开 Wiki 在右侧菜单栏可以看到有 13 页相关项目说明。简单翻了一下,用表格列出个人觉得值得仔细阅读的网页。

序号说明
one作者推特
two软件参数详细说明
three演示截图

图示如下

流程图代码
graph LR
D(软件说明目录_doc)
D1(README-zh-CN.md)
D2(THIRD-PARTY.md)
D-->|软件说明书|D1
D-->|第三方插件说明书|D2
D11(推特)
D12(参数全解)
D13(演示截图)
D1-->D11
D1-->D12
D1-->D13

插件库plugins

只有两个文件,分别是数据库信息大全 dbms 和 通用设置和操作 generic。

作者分别给 27 个数据库软件定制了连接、语法、文件系统等 6 个文件,放置在 dbms 目录。

各数据库统一有 6 个文件,以 dbms/mysql 目录为例,对比着 generic 通用文件和其它数据库目录文件,看看具体数据库 mysql 的文件。(发现作者还为SQLMap编写了异常处理文件,给人一种很全面的感觉)

流程图代码
graph LR
E11(mysql)
E111(connector.py)
E112(enumeration.py)
E113(filesystem.py)
E114(fingerprint.py)
E115(syntax.py)
E116(takeover.py)
E11-->|引用通用连接对象和特定连接|E111
E11-->|引用通用枚举对象并pass/枚举banner信息|E112
E11-->|使用5种读写文件方法|E113
E11-->|指纹和版本识别|E114
E11-->|特定功能性语法|E115
E11-->|OS 控制|E116

generic 除了有数据库插件 6 个文件的通用文件以外,还有 6 个有效文件。

generic其它文件说明 / all for plugins
custom.py执行sql语句和sql-shell
databases.pyfetch database、table、statement
entries.py定义枚举项
misc.py定义混杂的功能 for plugins
search.py查找功能 for plugins
users.py获取当前数据库用户、口令哈希、用户权限等

第一弹先到这儿。

绕过脚本tamper

目前最新版有 64 个绕过脚本,打开 0eunion.py 文件,有注释有代码。

def tamper(payload, **kwargs):
    """
    Replaces instances of <int> UNION with <int>e0UNION

    Requirement:
        * MySQL
        * MsSQL

    Notes:
        * Reference: https://media.blackhat.com/us-13/US-13-Salgado-SQLi-Optimization-and-Obfuscation-Techniques-Slides.pdf

    >>> tamper('1 UNION ALL SELECT')
    '1e0UNION ALL SELECT'
    """

    return re.sub(r"(?i)(\\d+)\\s+(UNION )", r"\\g<1>e0\\g<2>", payload) if payload else payload

列表格进行说明:

事项说明
必备条件数据库MySQL、MsSQL
替换内容<int> UNION --> <init>e0UNION
举例 1 UNION ALL SELECT替换后 1e0UNION ALL SELECT
正则替换函数re.sub(pattern, repl, string)

查看第二个文件 apostrophemask.py ,注释都很详细

事项说明
替换内容单引号’ -> unicode编码 %EF%BC%87
正则替换函数payload.replace(’’’, “%EF%BC%87”)
举例 1 AND ‘1’='1替换后 1 AND %EF%BC%871%EF%BC%87=%EF%BC%871

查看第三个文件 apostrophenullencode.py ,把单引号 ' 替换成 非法双unicode格式 %00%27,可以绕过吗有待测试,非法双unicode 又是什么?

绕过脚本这一块,对于 字符变换正则绕过 学习来说是一块宝藏,可以提供很多用例参考,字符集绕过这块大多是相通的。

data数据目录

数据目录有 6 个文件夹,其中 html 文件夹里只有 index.html 显示的是 SQLMap Web端的 Demo,猜测作者可能想为 SQLMap 添加 Web端交互使用模式。(仅个人猜想)

前面有提及 data 目录,有6个文件夹:html, procs, shell, txt, udf, xml。

  • html 里面有个index.html文件,打开是关于sqlmap的各种选项
  • procs 包含了mssqlserver、
    mysql、oracle和postgresql的触发程序,存放了一些SQL语句,主要涉及DNS带外传输数据的一些数据库命令
  • shell 注入成功时使用的 4 种shell,这些shell是经过加密的
  • txt 包含一些字典,例如:用户浏览器代理,表,列,和关键字等
  • udf UDF提权用的dll或者so文件,包含了用户自己自定义的攻击Payload
  • xml 包含了多种数据库的注入检测载荷、旗标信息以及其他信息。

在软件开发过程中,数据源 / 输入流 的重要性不言而喻,data目录内容具体到详细的数据,说是最重要的目录也不为过。但该目录又过于繁杂,计划随着项目的深入了解再进行后续补充。

使用说明

Usage: python sqlmap.py [options]

参数比较庞杂,建议先可以先从从基础用法开始看,然后看 演示截图

查看软件信息 和 General

查看软件信息参数
-h / --help基础用法
-hh高级用法
–version版本
-v verbose运行信息详细程度 / 冗长:0-6 (default 1)

参数中有对 Output verbosity / 参数冗长 进行说明,用于设置输出信息的详细程度,软件设置 7 个详细等级。

首先了解软件的输出信息,从 0 级开始依次叠加,使用示例 -v 3

  1. Python Tracebacks(Python错误信息和回跟踪)、error(软件错误)、关键消息
  2. information(信息)、警告消息
  3. 调试消息
  4. payload
  5. HTTP请求头
  6. HTTP响应头
  7. HTTP响应内容
General举例

基础用法 -h

1.Target
Target举例
-u URL / --url=URL-u http://www.site.com/vuln.php?id=1
-g Googledork把 Googledork 的结果当作目标,如 -g inurl:review.php?id=

参考 探索Google Hacking技巧,Google Dork,也称为Google Dorking或Google hacking。

关于 GoogleDork 的一些语句,参考 Google dorks sql insection:谷歌傻瓜式SQL注入,诚实地讲,SQL注入的测试站点太不缺了,有机会可以收集一下 GoogleDork 。

2.Request
Request举例
3.Injection
4.Detection
5.Techniques
6.Enumeration
7.Operating system access
8.Miscellaneous

参考

2.3 sqlmap目录及结构

以上是关于渗透工具-SQL注入-SQLMap项目梳理的主要内容,如果未能解决你的问题,请参考以下文章

sql注入神器 - sqlmap

渗透测试工具之sqlmap

SQL学习之SqlMap SQL注入

sqlmap使用

SQL注入攻击之sqlmap

SQL注入:初步体验Sqlmap