【渗透工具】-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 又是什么?

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

在SQLMap软件里,调用 tamper 的格式是 --tamper=xx.py, xx.py ,想要熟练掌握就要熟悉这 64 个脚本,留坑,数据分析时熟悉。

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

参考 sqlmap +外部代理池绕过IP拦截 SQLMAP的洋葱模式代理

Request举例
--data=DATAPost请求,e.g. id=1
--cookie=COOKIECookie 请求头
--random-agentUser-Agent 请求头
--proxy=Proxye.g. --proxy = http://127.0.0.1:5320
--torTor匿名网络,解决访问频率控制问题,--tor --tor-type=“SOCKS5”
--check-tor检查 tor 使用是否正常
3.Injection指定测试

参考 SQLMap注入指定数据库、操作系统

Injection举例
-p testParameter指定测试参数
--dbms=DBMS指定目标数据库软件,--dbms mysql 5.0
4.Detection自定义检测程度

参考 Sqlmap常见命令

根据注入点划分测试等级:lv2:cookie; lv3:user-agent,refere; lv5:host。

根据注入语句划分测试风险:risk 2:基于事件的测试;risk 3:or语句的测试;risk 4:update的测试。

Detection举例
--level=Level测试等级1-5, default 1
--risk=Risk1-3, default 1
5.Techniques注入技术

参考 sqlmap简单用法

Techniques举例
–technique=TECH…指定注入技术,default “BEUSTQ”

B : 基于Boolean的盲注(Boolean based blind)
Q : 内联查询(Inline queries)
T : 基于时间的盲注(time based blind)
U : 基于联合查询(Union query based)
E : 基于错误(error based)
S : 栈查询(stack queries)(又称堆叠注入)

内联查询比较少见,留个坑位,软件测试时看看 payload。

6.Enumeration枚举数据库管理系统信息、结构、数据

数据库系统事项

检索参数
检索所有事项-a, --all
检索DBMS banner-b, --banner
检索数据库系统当前用户--current-user
检索当前数据库名称--current-db
枚举参数
枚举口令哈希--passwords
枚举表--tables
枚举列--columns
枚举数据库对象集合--schema
下载参数
下载数据库的表项--dump
下载所有数据库的表项--dump-all
检索 库 / 表 / 列参数
指定数据库-D DB
指定表-T Table
指定列-C Column
7.Operating system access

不是太明白,留坑

Operating system access举例
--os-shellPrompt for an interactive operating system shell
--os-pwnPrompt for an OOB shell, Meterpreter or VNC
8.Miscellaneous杂项
Miscellaneous举例
--wizard面对初学者的简单向导页面

留坑

review 填坑说明
tamper目录整体把握 / 熟悉 64 个替换脚本
data目录数据分析时填坑
Techniques注入技术内联注入比较少见,留坑
Operating system access操作系统shell
advanced use进阶使用

参考

2.3 sqlmap目录及结构

sqlmap +外部代理池绕过IP拦截

SQLMAP的洋葱模式代理

SQLMap注入指定数据库、操作系统

Sqlmap常见命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值