mdb-sql是Kali Linux系统中MDB Tools工具集的重要组成部分,专门用于对Microsoft Access数据库文件(.mdb格式)执行SQL查询操作。它允许用户通过标准SQL语句与Access数据库交互,实现数据查询、提取和分析等功能。
该工具在渗透测试、数据取证和数据库迁移场景中应用广泛,能够直接读取Access数据库内容而无需安装Microsoft Access软件,支持多种SQL命令和输出格式控制,是处理Access数据库文件的高效工具。
工具功能描述:Run SQL on Microsoft Access database files (.mdb)(在Microsoft Access数据库文件(.mdb)上运行SQL)
二、mdb-sql参数说明
1. 帮助选项(Help Options)
| 参数 | 英文说明 | 中文说明 |
|---|---|---|
| -h, --help | Show help options | 显示帮助选项,列出所有可用参数及说明 |
2. 应用选项(Application Options)
| 参数 | 英文说明 | 中文说明 |
|---|---|---|
| -d, --delim=char | Use this delimiter | 使用指定的字符作为输出数据的分隔符(如逗号、制表符等) |
| -P, --no-pretty-print | Don't pretty print | 不启用美观打印模式,输出结果不进行格式化处理 |
| -H, --no-header | Don't print header | 不打印结果的表头信息(字段名) |
| -F, --no-footer | Don't print footer | 不打印结果的页脚信息(如记录计数) |
| -i, --input=file | Read SQL from specified file | 从指定文件中读取SQL命令并执行 |
| -o, --output=file | Write result to specified file | 将查询结果写入指定文件,而非标准输出 |
| --version | Show mdbtools version and exit | 显示mdbtools工具集的版本信息并退出 |
三、mdb-sql工具使用教程
1. 工具准备
mdb-sql通常随MDB Tools工具集预装在Kali Linux中,若未安装,可通过以下命令安装:
sudo apt update && sudo apt install mdbtools
验证安装:mdb-sql --version,若显示版本信息则安装成功。
2. 基础使用方法
场景1:启动交互式SQL会话
直接连接Access数据库文件并进入交互式SQL环境:
mdb-sql database.mdb
进入后将显示类似sql>的提示符,可直接输入SQL命令,例如:
sql> SELECT * FROM users;
sql> quit; # 退出交互式会话
场景2:查看数据库表结构
在交互式会话中查询数据库包含的表名及表结构:
mdb-sql database.mdb
sql> SHOW TABLES; # 列出所有表
sql> DESCRIBE users; # 查看users表的字段结构
3. 执行SQL查询
场景1:非交互式执行单条SQL命令
直接在命令行指定SQL查询并执行:
echo "SELECT username, email FROM users WHERE status='active'" | mdb-sql database.mdb
场景2:从文件读取并执行多条SQL命令
将多条SQL命令写入文件(如queries.sql),通过-i参数执行:
queries.sql文件内容示例:
SELECT * FROM products;
SELECT COUNT(*) FROM orders;
执行命令:
mdb-sql -i queries.sql database.mdb
4. 控制输出格式
场景1:自定义输出分隔符(如CSV格式)
使用-d参数指定逗号作为分隔符,生成CSV格式输出:
mdb-sql -d ',' -H -F database.mdb -i query.sql > output.csv
说明:-H禁用表头,-F禁用页脚,结果输出到output.csv文件。
场景2:禁用格式化输出(适合脚本处理)
使用-P参数关闭美观打印,输出紧凑格式:
mdb-sql -P database.mdb -i query.sql
场景3:将结果保存到文件
使用-o参数直接将查询结果写入文件:
mdb-sql -o results.txt database.mdb -i query.sql
5. 高级使用技巧
场景1:结合grep筛选查询结果
通过管道命令过滤包含特定关键词的记录:
mdb-sql database.mdb -i query.sql | grep "admin"
场景2:批量导出数据库表数据
编写脚本循环导出所有表数据到CSV文件:
for table in $(mdb-tables -1 database.mdb); do
echo "SELECT * FROM $table;" | mdb-sql -d ',' -H -F database.mdb > "$table.csv"
done
说明:结合mdb-tables工具(同样来自MDB Tools)获取所有表名,批量导出为CSV。
场景3:查询结果分页显示
使用less命令分页查看大量查询结果:
mdb-sql database.mdb -i large_query.sql | less
四、注意事项
- 文件权限:确保对目标.mdb文件有读取权限,否则会提示无法打开文件
- SQL兼容性:mdb-sql支持大部分标准SQL语法,但部分Access特有函数可能不兼容
- 大型数据库:处理大型.mdb文件时可能需要较长时间,建议结合-o参数输出到文件后分析
- 编码问题:若数据库包含特殊字符,可能需要调整系统编码或使用额外工具处理乱码
- 版本差异:不同版本的MDB Tools对Access数据库版本的支持可能不同,遇到问题可尝试更新工具