which common columns (wordlist) file do you want to use? [1] default 'D:\WpSystem\S-1-5-21-589763762-2765656899-3959673489-1001\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\sqlmap\data\txt\common-columns.txt' (press Enter) [2] custom
时间: 2025-07-21 17:53:04 浏览: 6
<think>我们正在讨论的是SQLMap中公共列名文件的选择问题。根据用户的需求,用户希望了解如何为SQLMap选择或指定公共列名文件(common columns file)。在引用[2]中提到,当数据库是Access且没有权限读取系统表时,可以使用`--common-columns`参数。同样,`--common-tables`用于表名枚举。
在SQLMap中,`--common-columns`参数用于指定一个包含常见列名的文件,以便在无法通过常规方式(如查询information_schema)获取列名时使用。这个文件通常是一个文本文件,每行一个列名。
用户可能没有这样的文件,或者想自定义这个文件。SQLMap自带了一个默认的公共列名文件,位于`/data/txt/common-columns.txt`(在SQLMap安装目录下)。用户也可以使用自己的文件。
操作步骤:
1. 使用默认的公共列名文件:只需在命令中添加`--common-columns`参数,不需要指定文件路径,因为SQLMap会自动使用自带的文件。
2. 使用自定义的公共列名文件:同样使用`--common-columns`参数,但需要指定文件路径,例如:`--common-columns=/path/to/your-columns.txt`
示例命令:
```bash
sqlmap.py -u "http://example.com/?id=1" --common-columns
```
或者使用自定义文件:
```bash
sqlmap.py -u "http://example.com/?id=1" --common-columns=/home/user/common-columns.txt
```
如何创建自定义的公共列名文件?
创建一个文本文件,每行写一个常见的列名。例如:
```
id
username
password
email
created_at
updated_at
status
...
```
注意:这个文件应该包含目标数据库中可能存在的常见列名。SQLMap会尝试这些列名来猜测表中的列。
此外,引用[2]还提到,对于Access数据库,由于系统表(MSysObjects)没有列信息,所以使用`--common-columns`是必要的。同样,如果MySQL版本低于5.0或者没有权限读取information_schema,也可以使用这种方法。
因此,用户可以根据目标数据库的类型和已知信息来准备一个合适的列名列表。
相关问题:
1. 如何为SQLMap创建自定义的公共表名文件?
2. 在SQLMap中如何绕过WAF进行列名枚举?
3. 如何提高SQLMap在列名枚举阶段的成功率?
注意:在回答中,我们引用了引用[2]的内容,所以在末尾添加引用标识[^2]。</think>### 选择 SQLMap 公共列名文件的方法
当使用 `--common-columns` 参数时,SQLMap 会尝试使用预定义的常见列名进行枚举,尤其在以下场景:
1. 目标数据库是 Access 且无权限读取 MSysObjects 系统表[^2]
2. MySQL < 5.0 或无权读取 information_schema[^2]
3. 常规列名枚举失败时
#### 选择公共列名文件的步骤:
1. **查看默认文件位置**
SQLMap 内置的公共列名文件位于:
`sqlmap/data/txt/common-columns.txt`
包含常见列名如:`id`, `username`, `password`, `email` 等
2. **使用自定义文件**
创建自定义文本文件(如 `my-columns.txt`),格式为每行一个列名:
```plaintext
user_id
login
pass
address
phone
created_at
```
执行命令:
```bash
sqlmap -u "http://target.com" --common-columns=/path/to/my-columns.txt
```
3. **结合其他参数优化**
```bash
# 示例:针对Access数据库的完整命令
sqlmap -u "http://target.com" --dbms=access \
--common-tables \ # 使用公共表名文件
--common-columns=~/custom-columns.txt \ # 自定义列名文件
--technique=B \ # 布尔盲注
--level=3 # 提高检测级别
```
#### 关键注意事项:
1. **文件格式要求**
- 必须为纯文本文件(.txt)
- 每行仅包含一个列名
- 避免特殊字符如 `, ; ' "`
2. **适用场景优先级**
按顺序尝试:
```mermaid
graph LR
A[常规列名枚举] -->|失败| B[--common-columns]
B -->|仍失败| C[自定义列名文件]
```
3. **成功率提升技巧**
- **目标调研**:通过网站功能推测可能的列名(如注册页可能含 `mobile` 列)
- **组合使用**:同时指定 `--common-tables` 和 `--common-columns`
- **增量测试**:先用小规模文件(10-20个常见列名),再逐步扩展
> **最佳实践**:对于 Access 数据库,推荐同时准备自定义的[公共表名文件](https://github.com/sqlmapproject/sqlmap/wiki/Usage#common-tables)和列名文件,因系统表访问权限常受限制[^2]。
阅读全文
相关推荐



















