sqlmap 的 logger 模块

sqlmap 中的六类 logger 等级

  1. sqlmap 的 log 模块位于 lib\core\log.py 中。在 lib\core\data.py 中引用了该文件,并设置了全局变量 logger 作为整个 sqlmap 周期中的 logger 函数
  2. log.py 被引用时,会自动创建名称为 sqlmapLog 的 logger 。大致流程如下:
    # 设置logger等级
    logging.addLevelName(CUSTOM_LOGGING.PAYLOAD, "PAYLOAD")
    logging.addLevelName(CUSTOM_LOGGING.TRAFFIC_OUT, "TRAFFIC OUT")
    logging.addLevelName(CUSTOM_LOGGING.TRAFFIC_IN, "TRAFFIC IN")
    # ...
    # 创建全局logger
    LOGGER = logging.getLogger("sqlmapLog")
    # loggger_handler设置为自定义的class(color输出),否则如下:
    # LOGGER_HANDLER = logging.StreamHandler(sys.stdout)
    LOGGER_HANDLER = _ColorizingStreamHandler(sys.stdout)
    # 设置logger打印模式
    FORMATTER = logging.Formatter("\r[%(asctime)s] [%(levelname)s] %(message)s", "%H:%M:%S")
    LOGGER_HANDLER.setFormatter(FORMATTER)
    LOGGER.addHandler(LOGGER_HANDLER)
    # 设置默认等级为INFO
    LOGGER.setLevel(logging.INFO)
    
  3. 综上,根据命令行中 v 的数量, sqlmap 的日志等级能够切换为 6 类。
    • ERROR ->只输出 Python 出错回溯信息,错误和关键信息。(0)
    • INFO ->增加输出普通信息和警告信息。(1)
    • DEBUG >增加输出调试信息。(2)
    • CUSTOM_LOGGNG.PAYLOAD ->增加输出已注入的 payloads(3)
    • CUSTOM_LOGGING.TRAFFIC_OUT ->增加输出 HTTP 请求。(4)
    • CUSTOM_LOGGING.TRAFFIC_IN ->增加输出 HTTP 响应。(5)
      所以调试过程一般可以使用三级即打印 payloads 。