sqlmap 结构与原理

文章目录

  • 前言
  • 一、sqlmap 基础
  • 二、目录结构
    • data目录
    • extra
    • lib
    • plugins
    • tamper
    • thirdparty


前言

我么已经知道了SQL注入的原理:http://t.csdn.cn/xNq65
我们已经知道了POC/EXP:http://t.csdn.cn/Lpx09

手工测很累,我们可以写POC/EXP。更进一步,提高POC/EXP的质量,并在程序中加入多线程。等我们厉害了,加入绕过等的功能。当我们的代码水平提高等一定程度,我们就会考虑软件工程、封装、复用等一系列因素。实现了这些,那么sqlmap就诞生了

sqlmap 官网:https://sqlmap.org/


提示:以下是本篇文章正文内容,下面案例可供参考

一、sqlmap 基础

sqlmap使用python编写,目前py2和py3都支持。为了在使用工具的时候心里有个底,清楚地知道当前正在做什么,有必要理解工具原理。

这种自动化工具都可以看作POC/EXP框架,我们可以自己实现一个。当我们传入一个url,sqlmap也是添加已有的payload,然后发送,根据特征匹配回包,进而判断是否存在SQL注入。

二、目录结构

从GitHub上把项目clone下来:git clone https://github.com/sqlmapproject/sqlmap.git
sqlmap 结构与原理_第1张图片

或者直接在kali的usr/share/sqlmap目录下
sqlmap 结构与原理_第2张图片

data目录

sqlmap 结构与原理_第3张图片
以前的几个目录归档到了data目录,主要的几个目录如下:
data

  • procs:包含了mssqlserver、 mysql、oracle和postgresql的触发程序,存放了一些SQL语句,主要涉及DNS带外传输数据的一些数据库命令
  • shell:注入成功时使用的4种shell,经过加密
  • txt:包含了一些字典
  • udf:UDF提权用的dll文件,包含自定义的攻击载荷(payload
  • xml:数据库注入的检测载荷、旗标信息及其他信息

extra

包含了sqlmap的各种额外功能,包括但不限于发出声响的(beep.py), 代码加密(cloak.py -i bmfx.php -o bmfxtech.php) ,二进制转换(./dbgtool.py -i ./nc.exe -o nc.scr) ,运行cmd,安全执行,shellcode等等
sqlmap 结构与原理_第4张图片

  • beep:警报声音文件夹
  • cloak:生成、解密文件等操作
  • dbgtool:执行转换的文件夹
  • icmpsh:win32的反向icmpshell
  • shellcodeexec:包含Linux/Win 平台下的shellcode
  • vulnserver:简易的漏洞服务,用于fuzz测试

lib

包含了sqlmap的多种连接库,例如:sqlmap的5中SQL注入类型请求的参数,提权操作等
sqlmap 结构与原理_第5张图片

  • controller:
    • action.py 利用URL受到影响的参数进行SQL注入,并且在条件许可下抽取系统或者数据库中的数据。
    • checks.py 利用载荷对发现的sql注入点进行注入检测。
    • controller.py 对用户传递的参数进行控制。
    • handler.py 对用户传递的数据库名称进行处理
  • core:核心文件,有各种参数的调用文件。例如设置目标 会调用 target.py。还有agent.py,dump.py,threads.py等
  • parse 该参数文件夹有banner.py cmdline.py sitemap.py configfile.py payloads.py handler.py html.py headers.py 等一系列配置处理参数调用文件
  • request 该请求文件夹有basic.py templates.py basicauthhandler.py redirecthandler.py comparison.py rangehandler.py connect.py pkihandler.py direct.py methodrequest.py dns.py inject.py httpshandler.py 等一系列网络请求连接文件
  • takeover 这个是接管文件夹,文件夹里面有abstraction.py xp_cmdshell.py icmpsh.py web.py metasploit.py udf.py registry.py 注入成功后接管受害者机器的shell.
  • techniques 这个是注入分类文件夹有blind,dns,error,union,brute 等物类注入类型,其中每个文件夹有相应的注入类型执行文件。
  • utils 这是小功能文件夹。该文件中含有 api.py xrange.pycrawler.py versioncheck.py deps.py timeout.py getch.py hash.py sqlalchemy.py hashdb.py search.py htmlentities.py purge.py pivotdumptable.py progress.py 等多种功能的调用文件。

plugins

插件库,例如:在使用sqlmap连接数据库的时候需要用到其中的一些不同数据库的python连接类,以及各种数据库的信息和数据库通用事项等
sqlmap 结构与原理_第6张图片

  • dbms:包含各种数据库枚举,连接和接管等相关说明,sqlmap支持Access,DB2,FireBird,HSQLDB,MaxDB,MSSQLServer,MySQL,Oracle,PostgreSQL,SQLite和Sybase数据库等等,每个数据库文件都有固定的文件,例如,MySQL文件夹中含有connector.py, enumeration.py, filesystem.py, fingerprint.py, syntax.py, takeover.py
  • generic:这是个通用文件夹,里面包含 connector.py, custom.py, databases.py, entries.py, enumeratioin.py, filesystem.py, fingerprint.py, misc.py, search.py, syntax.py, takeover.py, users.py

tamper

目前(1.7.2.22#dev版本)包含了个60多个绕过脚本,例如:编码绕过,注释绕过等等,还有很多
sqlmap 结构与原理_第7张图片

thirdparty

包含了一些第三方的插件,例如:优化,保持连接,颜色等等
sqlmap 结构与原理_第8张图片
文件夹中的主要文件

  • ansistrm:ansistrm.py,定义了结果输出终端的颜色显示
  • beautifulsoup: beautifulsoup.py,将XML转换为树状表示法,用以爬取目标站点,参数为--crawl
  • bottle:是python一个轻量WSGI未Web框架,bottle.py,构建静态/动态HTTP请求的关键所在
  • chardet:有众多字符探针和字符定义文件,主要作用是探测web页面的页面编码。
  • clientform:主要文件是clientform.py,它对Web客户端进行HTML表格处理。
  • colorama:主要功能是为了将ansi转化为win32编码。
  • fcrypt:为标准的Linux加密提供端口,或者说是修复缺失加密功能的Python版本,用于破解通用密码哈希值,参数为--passwords
  • gprof2dot:主要提供了从几个解析器的输出中产生一个dot 图形,
  • keepalive:keepalive.py,它的urllib2对HTTP处理程序支持HTTP1.1和存活,keepalive用于持久的HTTP(s)请求,参数为--keep-alive-o
  • magic;该文件夹主要里面的文件是magic.py,magic 是一个libmagic文件识别库的包装器,用于识别和显示日志消息中的文件类型,参数为--file-write
  • multipart:该文件夹里面的文件是multipartpost.py,进行多线程发送数据包。
  • odict:该文件夹里面的文件是odict.py,为有序字典对象,保存插入顺序的密钥。
  • oset:Python ABC类的部分补丁,pyoset.py为主要程序,_abc.py为辅助类的ABC类说明,oset用于对所提供的排序目标进行排序,参数-l-m-g
  • prettyprint 该文件夹里面主要的文件是prettyprint.py,该脚本优化终端结果输出显示,用于生成xml输出,参数为--xml
  • pydes Python中3DES加密解密算法,其中里面有加密解密算法说明,用于破解Oracle旧密码格式,参数为 --passwords
  • socks:Python中的sock模块
  • termcolor:该文件夹里面文件是termcolor.py,它实现了终端输出的颜色格式化。
  • wininetpton:网络地址
  • xdot:dot格式的可视化图形,用于内部测试

你可能感兴趣的:(工具篇,数据库)