You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将已知表名添加至SQLmap基于时间的会话中?

解决基于时间的数据库表枚举会话进度恢复问题

方案1:直接修改会话SQLite数据库(最准确)

大部分基于时间盲注的工具(比如sqlmap)会用SQLite存储会话进度,你可以手动插入已记录的表名,标记为已完成:

  • 找到工具会话目录下的session.sqlite文件(比如sqlmap的路径是data/sessions/[目标IP]/[会话ID]/session.sqlite)
  • 用SQLite可视化工具(如DB Browser for SQLite)或命令行sqlite3打开该文件
  • 定位存储已枚举表的表(通常名为tables),查看其结构:
    • 以sqlmap为例,tables表字段包括id(自增主键)、db(目标数据库名)、name(表名)、found(1表示已发现)
  • 插入已记录的表名:
    1. 先查询当前最大ID,确保新插入的ID唯一(或直接依赖自增,不指定ID字段):
      SELECT MAX(id) FROM tables;
      
    2. 逐条插入已知表,替换target_db为你的目标数据库名:
      INSERT INTO tables (db, name, found) VALUES ('target_db', 'user_info', 1);
      INSERT INTO tables (db, name, found) VALUES ('target_db', 'order_list', 1);
      -- 重复此语句添加所有已记录的表名
      
  • 保存数据库后重启工具,进度会自动跳过已标记的表。

方案2:用排除参数跳过已枚举表(更简单)

如果不想修改数据库,可以通过工具的排除参数跳过已知表,避免重复扫描:

  • 将已记录的表名存入文本文件(如completed_tables.txt),每行一个表名
  • 启动盲注工具时添加排除参数,以sqlmap为例:
    sqlmap -u "目标URL" --time-based -D target_db --exclude-tables @completed_tables.txt
    
    工具会自动跳过文件中的表,直接从未枚举的表开始扫描。

为什么--common-tables参数没用?

--common-tables是让工具优先枚举常见表名(如users、admin),并非将这些表标记为已完成的会话进度,所以无法帮你恢复之前的扫描进度。

内容的提问来源于stack exchange,提问作者Joseph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:37:27