sqlmap源码阅读笔记---LOGGER

本文是关于sqlmap源码的阅读笔记,主要关注LOGGER部分。首先介绍了sqlmap的基本信息和安装方法,接着进入sqlmap.py文件,探讨了versioncheck的功能。重点解析了logger模块,它基于python的logging并进行了自定义扩展,添加了特定的日志级别如payload、TrafficOUT、TrafficIN等。还简单提及了logger、handler和filter之间的关系,并提到了第三方库ansistrm提供的颜色输出功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍:跨平台的sql注入攻击神器,自己谷歌

安装方法:git clone https://github.com/sqlmapproject/sqlmap.git

第一次看纯python项目,自己的python也就那样,欢迎留言交流~注:大牛勿喷

打开sql文件夹:其中各个文件夹的内容和作用话说我现在还没有看到,就不妄言了。直接打开sqlmap.py文件

可以看到:先是一大堆import,上面的是python内置库,不管他,重点看下面的

上面的那个versioncheck跟进去看看,就是检查一些东西,看是否满足配置条件(类似于c文件里的宏定义检查配置)

然后来看看那个logger,为啥那么多先看logger呢,一般来说,logger都是比较简单的实现,

柿子要挑软的捏~~

进去看看:

from lib.core.log import LOGGER
logger= LOGGER

跟下去

  1 #!/usr/bin/env python
  2 
  3 """
  4 Copyright (c) 2006-2014 sqlmap developers (http://sqlmap.org/)
  5 See the file 'doc/COPYING' for copying permission
  6 """
  7 
  8 import logging
  9 import sys
 10 
 11 from lib.core.enums import CUSTOM_LOGGING
 12 
 13 logging.addLevelName(CUSTOM_LOGGING.PAYLOAD, "PAYLOAD")
 14 logging.addLevelName(CUSTOM_LOGGING.TRAFFIC_OUT, "TRAFFIC OUT")
 15 logging.addLevelName(CUSTOM_LOGGING.TRAFFIC_IN, "TRAFFIC IN")
 16 
 17 LOGGER = logging.getLogger("sqlmapLog")
 18 
 19 LOGGER_HANDLER = None
 20 try:
 21     from thirdparty.ansistrm.ansistrm import ColorizingStreamHandler
 22 
 23     disableColor = False
 24 
 25     for argument in sys.argv:
 26         if "disable-col" in argument:
 27             disableColor = True
 28             break
 29 
 30     if disableColor:
 31         LOGGER_HANDLER = logging.StreamHandler(sys.stdout)
 32     else:
 33         LOGGER_HANDLER = ColorizingStreamHandler(sys.stdout)
 34         LOGGER_HANDLER.level_map[logging.getLevelName("PAYLOAD")] = (None, "cyan", False)
 35         LOGGER_HANDLER.level_map[logging.getLevelName("TRAFFIC OUT")] = (None, "magenta", False)
 36         LOGGER_HANDLER.level_map[logging.getLevelName("TRAFFIC IN")] = ("magenta", None, False)
 37 except ImportError:
 38     LOGGER_HANDLER = logging.StreamHandler(sys.stdout)
 39 
 40 FORMATTER = logging.Formatter("\r[%(asctime)s] [%(levelname)s] %(message)s", "%H:%M:%S")
 41 
 42 LOGGER_HANDLER.setFormatter(FORMATTER)
 43 LOGGER.addHandler(LOGGER_HANDLER)
 44 LOGGER.setLevel(logging.WARN)

那个lib.core.enums相当与常量定义区,c项目里面的各种要用到的常量的宏定义

而后是基于python自带的logging模块的自适配的logger.

这里不得不吐槽下python的命令行文档,完全不知道在哪里看类的关系~,自己太菜~,总之,我在这里看https://docs.python.org/2/howto/logging.html#logging-basic-tutorial,里面

有张图很清晰的描述了logger、handler和filter之间的关系。

总之,sqlmap中的logger是添加了几个日志级别,payload | TranficOUT | TranficIN之类的

而后,适配了handler(包括引用第三方的handler和自定义输出消息格式),那个第三方库的ansistrm中,也是继承自自带logging的一个带有颜色输出的logger,还没仔细看。

恩,就这样结束了,不太会用csdn的博客编辑。。。

SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。   读者可以通过位于SourceForge的官方网站下载SQLmap源码:http://sourceforge.net/projects/sqlmap/   什么是SQL注入?         SQL注入是一种代码注入技术,过去常常用于攻击数据驱动性的应用,比如将恶意的SQL代码注入到特定字段用于实施拖库攻击等。SQL注入的成功必须借助应用程序的安全漏洞,例如用户输入没有经过正确地过滤(针对某些特定字符串)或者没有特别强调类型的时候,都容易造成异常地执行SQL语句。SQL注入是网站渗透中最常用的攻击技术,但是其实SQL注入可以用来攻击所有的SQL数据库。在这个指南中我会向你展示在Kali Linux上如何借助SQLMAP来渗透一个网站(更准确的说应该是数据库),以及提取出用户名和密码信息。   什么是SQLMAP?          SQLMAP是一个开源的渗透测试工具,它主要用于自动化地侦测和实施SQL注入攻击以及渗透数据库服务器。SQLMAP配有强大的侦测引擎,适用于高级渗透测试用户,不仅可以获得不同数据库的指纹信息,还可以从数据库中提取数据,此外还能够处理潜在的文件系统以及通过带外数据连接执行系统命令等。         访问SQLMAP的官方网站http://www.sqlmap.org可以获得SQLMAP更为详细的介绍,如它的多项特性,最为突出的是SQLMAP完美支持MySQL、Oracle、PostgreSQL、MS-SQL与Access等各种数据库的SQL侦测和注入,同时可以进行六种注入攻击。        还有很重要的一点必须说明:在你实施攻击之前想想那些网站的建立者或者维护者,他们为网站耗费了大量的时间和努力,并且很有可能以此维生。你的行为可能会以你永远都不希望的方式影响到别人。我想我已经说的够清楚了。(PS:请慎重攻击,不要做违法的事情)       PS:之前在wooyun上看了一些关于SQLMAP的文章,受益匪浅,今天翻译这篇文章,是希望对于如何使用SQLMAP提供一个基本的框架,SQL注入的原理以及SQLMAP详细的命令参数和不同的应用实例可以参考下面的文章: SQL注射原理:http://drops.wooyun.org/papers/59 SQLMAP用户手册:http://drops.wooyun.org/tips/143 SQLMAP实例COOKBOOK:http://drops.wooyun.org/tips/1343 SQLmap的作者是谁? Bernardo DameleAssumpcao Guimaraes (@inquisb),读者可以通过[email protected]与他取得联系,以及Miroslav Stampar (@stamparm)读者可以通过[email protected]与他联系。 [email protected]者联系。 相关教程请参考: http://www.cnblogs.com/waw/p/5140555.html http://www.freebuf.com/articles/web/29942.html 测试注入的效果图:       标签:sql注入
### 关于 `sqlmap` 使用 `--os-shell` 参数的教程 #### 工具概述 `sqlmap` 是一款功能强大的自动化 SQL 注入渗透测试工具,能够检测并利用多种类型的 SQL 注入漏洞。除了基本的数据提取外,它还支持高级操作,比如通过 `--os-shell` 获取目标系统的命令执行权限。 --- #### `-d` 和 `--os-shell` 参数详解 1. **`-d` 参数的作用** `-d` 参数允许用户直接指定一个已经保存的目标配置文件路径或数据库连接字符串来启动扫描过程。这可以简化重复输入相同参数的过程[^1]。 2. **`--os-shell` 参数的功能** 当存在高危 SQL 注入漏洞时,`sqlmap` 能够尝试提升权限至操作系统层面,并提供交互式的 Shell 接口供攻击者使用。此接口可用于运行任意系统命令,前提是满足以下条件: - 数据库用户的权限足够高(通常是 root 或具有管理员权限)。 - 目标环境支持特定的操作模式(如堆栈调整、UDF 加载等)。[^3] --- #### 实际案例分析 以下是几个实际使用的场景及其对应的命令: 1. **基于请求文件的方式** 如果已有一个包含 HTTP 请求包的 `.txt` 文件,则可以通过如下方式调用 `sqlmap` 并启用 `--os-shell` 功能: ```bash python sqlmap.py -r /path/to/request.txt --dbms=mysql --os-shell ``` 这里 `-r` 表示读取请求文件的内容作为输入源;`--dbms=mysql` 明确指定了目标数据库类型为 MySQL[^2]。 2. **基于 URL 的方式** 若知道具体的注入点 URL 地址,可以直接将其传递给程序: ```bash sqlmap -u "http://example.com/vuln?id=1" --is-dba --os-shell ``` 上述例子中,`--is-dba` 用来验证当前登录账户是否具备 DBA 权限,这是成功开启 OS Shell 的前提之一。 3. **结合其他选项增强效果** 对某些复杂情况可能还需要额外设置一些辅助开关,例如绕过 WAF 防护机制或者优化性能表现等等。下面展示了一个综合运用多个参数的例子: ```bash sqlmap -u "http://target.site/page.php?param=value" \ --random-agent \ --level=5 \ --risk=3 \ --technique=BETUQ \ --os-shell ``` --- #### 技术原理剖析 当触发 `--os-shell` 后,`sqlmap` 内部会经历以下几个阶段完成最终目的: 1. 自动探测适合的方法实现远程代码执行; 2. 构建临时存储空间存放必要的脚本组件; 3. 利用这些资源加载自定义函数到内存当中去; 4. 提供给前端图形化界面让用户自由下达各种指令直至结束整个流程为止[^4]。 需要注意的是,在真实环境中应用此类技术务必获得合法授权以免触犯法律! --- ```python import os command = input("Enter your command: ") result = os.popen(command).read() print(result) ``` 上述 Python 小片段展示了如何简单地接收用户输入并在本地终端上回显结果,类似于 `sqlmap` 执行后的行为模拟版本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值