渗透工具-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.py | fetch 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
。
- Python Tracebacks(Python错误信息和回跟踪)、error(软件错误)、关键消息
- information(信息)、警告消息
- 调试消息
- payload
- HTTP请求头
- HTTP响应头
- 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
参考
以上是关于渗透工具-SQL注入-SQLMap项目梳理的主要内容,如果未能解决你的问题,请参考以下文章