sqlmap 的源码学习笔记一之目录结构
0x00 前言
sqlmap 是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。本文重点研究sqlmap的软件具体的目录结构,后续的文章也会从源码编写中,阐述sqlmap的种种编码结果。本文从结构中,可以看到sqlmap中的软件工程之美,同时从严谨的软件结构目录分类和构造中,看到sqlmap中的软件开发过程中的庞大但简洁的结构之美。
0x01 目录结构简要
一般来说,从github下载并且解压sqlmap后,所有文件或者文件夹的数目加起来总共24个,部分目录和结构属于典型的github 项目结构,但是本文依然会做出简单的介绍,方便读者全面理解。
.git—>>>这个是git的代码管理仓库,基本上每个github项目都会有这个文件夹,记录了文件上传更改等版本信息。
-
.gitattributes—>>>这个是git的属性文件,例如何种编程语言、具体文件类型等。
-
.gitignore—>>>这个是git的忽略文件,例如忽略某些文件,不把这些文件上传到git仓库中。
-
.travis.yml—>>>这个标记了python的版本和设置sqlmap的脚本。
doc/ ---->>>该文件夹包含了sqlmap的具体使用说明,例如多种语言的简要说明、PDF版的详细说明、FAQ、作者信息等。
extra/—>>>这里包含了sqlmap的多种额外功能,例如发出声响(beep)、运行cmd、安全执行、shellcode等。
lib/—>>>这里包含了sqlmap的多种连接库,如五种注入类型请求的参数、提权操作等。
plugins/ —>>>这里包含了各种数据库的信息和数据库通用事项。
procs/—>>>这里包含了mssqlserver、 mysql、oracle和postgresql的触发程序
shell/ —>>>这里包含了多种注入成功后的9种shell远程连接命令执行和管理数据库
tamper/ —>>>这里包含了47种的绕过脚本,例如编码绕过、注释绕过等。
thirdparty/—>>>这里包含了一些其他第三方的插件,例如优化、保持连接、颜色等。
txt/ —>>>这里包含了一些字典,例如用户浏览器代理、表、列、关键词等。
udf/ —>>>这里包含了用户自己定义的攻击载荷。
waf/ —>>>>这里包含了一些44种常见的防火墙特征。
xml/—>>>这里包含了多种数据库的注入检测载荷、旗标信息以及其他信息。在这里可以看到进行注入的。
README.md—>>>说明文件,简要地指导我们下载、安装和使用sqlmap,里面有多种语言版本(中文)的安装下载使用介绍说明。
sqlmap.conf —>>>>sqlmap的配置文件,如各种默认参数(默认是没有设置参数、可设置默认参数进行批量或者自动化检测)。
sqlmap. py* —>>>> 这是sqlmap的主程序,可以调用各种参数进行注入任务。
sqlmapapi. py* —>>>>这是sqlmap 的api文件,可以将sqlmap集成到其他平台上。
0x02 目录 sqlmap/doc/
这里包含了sqlmap的具体使用说明。如多种语言的简要说明、PDF版的详细说明、FAQ、作者信息等。以下是文件夹的内容:
-
README.pdf#英文说明文档,它非常详细介绍了如何调用各种参数和设置来使用sqlmap。善于熟练利用sqlmap也是很厉害的
-
FAQ.pdf#英文解疑文档,它罗列了在使用sqlmap经常遇到的问题和解决,无论是安装还是使用过程出现问题,可以查看帮助。
-
translations#翻译文件夹,包含了下载、安装和使用sqlmap的简要说明文档,该文件包含多种语言版本,其中也有中文版。
-
AUTHORS#作者信息,它介绍了sqlmap的编者及其邮箱。国外的两个大牛很慷慨地开源了sqlmap注入工具,想想乌云中,有多人靠它四处挖洞,实在应该感谢编者。
-
CHANGELOG.md #更新日志,介绍了sqlmap 的更新功能及特性。很多优秀的功能等待挖掘。但很多人没有注意,毕竟绝大部分同学用的都是基本功能。
-
CONTRIBUTING.md #贡献文件,它介绍我们在使用sqlmap的时如果有bug可以提交攻贡献到github.
-
COPYING #版权文件,它介绍了sqlmap的发布权利和重新分发的说明。
-
THANKS.md #感谢文档,它介绍了对sqlmap有所贡献的作者。
-
THIRD-PARTY.md #第三方插件,它介绍了集成在sqlmap的第三方插件的概要说明。
0x03 目录 sqlmap/extra/
sqlmap/extra/beep/#警报声音文件夹。
-
sqlmap/extra/beep/beep.py,它是产生警报声音的文件,参数为–beep,当发现sql注入的时候,发出警报声。
-
sqlmap/extra/beep/beep.wav 警报的声音文件。
sqlmap/extra/dbgtool/# 执行转换的文件夹。
-
sqlmap/extra/dbgtool/dbgtool.py #可以ASCII文本转化到便携式的exe文件,生成的nc.exe可以安装windows上,进行后门监听。
-
sqlmap/extra/dbgtool/README.txt为该文件的说明文件。
-
sqlmap/extra/mssqlsig/update.py#它更新了MSSQL版本号,不过好像URL打不开了。莫非是国内的原因。
sqlmap/extra/safe2bin/#文件夹,具有转成bin文件功能的文件。例如你可以把一个文本转换成可执行文件。其README.txt有它的简要说明、safe2bin.py是可操作的执行文件。
sqlmap/extra/shutils/#python的文件操作工具。它实现了查找第三方插件等功能。
sqlmap/extra/cloak/#可以利用cloak.py可以生成后门等操作。
sqlmap/extra/icmpsh/#一个win32的反向ICMPshell,是进行注入成功后反弹回来的一种shell.
sqlmap/extra/runcmd/#进行注入成功后,反弹回来cmd命令的辅助工具.
sqlmap/extra/shellcodeexec/#被安装在受害者机器上的shellcode,这些并非在自己的机器上运行的,里面有windows的32,linux的32,64位
sqlmap/extra/sqlharvest/#利用google进行搜索爬取文件。
0x04 目录sqlmap/lib
sqlmap调用多种功能的库,以下是其文件夹里面的内容:
controller# 该目录能够进行一系列的检查贮备工作,下面简要介绍几个文件。
-
action.py #利用URL受到影响的参数进行SQL注入,并且在条件许可下抽取系统或者数据库中的数据。
-
checks.py #利用载荷对对发现的sql注入点进行注入检测。
-
controller.py #对用户传递的参数进行控制。
-
handler.py #对用户传递的数据库名称进行处理
core# 该核