【PortSwigger Academy】SQL 注入绕过登录 (Login Bypass)

本文仅用于技术研究,禁止用于非法用途。
Author:枷锁

PortSwigger Academy 实验指南:SQL 注入绕过登录 (Login Bypass)

本指南涵盖了 PortSwigger Web Security Academy 中 "SQL injection vulnerability allowing login bypass" 实验的完整流程。

1. 实验基本信息

  • 实验名称:SQL injection vulnerability allowing login bypass
  • 难度系数:入门级 (Apprentice)
  • 目标 :以 administrator 用户身份登录。
  • 官方直达链接 :点击访问实验页面

2. 核心原理分析

在正常的登录逻辑中,后端服务器会接收用户输入的用户名和密码,并将其嵌入到 SQL 查询语句中。

正常的 SQL 查询

假设后端代码如下:

复制代码
SELECT * FROM users WHERE username = 'USER_INPUT' AND password = 'PASSWORD_INPUT'

如果用户输入 alice 和 123456,查询变为: SELECT * FROM users WHERE username = 'alice' AND password = '123456' 只有当用户名和密码完全匹配时,数据库才会返回该用户信息。

SQL 注入攻击逻辑

攻击者可以通过特殊的输入来改变 SQL 语句的结构 。本实验的关键在于利用 SQL 的注释符。

  • 攻击载荷 (Payload) :administrator'--

  • 注入后的 SQL 语句:

    复制代码
    SELECT * FROM users WHERE username = 'administrator'--' AND password = '...'
  • 发生了什么?

    1. ': 闭合了 username 字段的左单引号。
    2. --: 这是 SQL 中的单行注释符(注意 -- 后面通常需要接一个空格)。
    3. 结果 :-- 之后的所有内容(包括密码验证部分)都被数据库忽略了。查询变成了:SELECT * FROM users WHERE username = 'administrator'。

只要数据库中存在 administrator 用户,查询就会返回结果,服务器逻辑会认为"验证成功"并允许你以该用户身份登录。

3. 详细解题步骤

第一步:访问实验室

  1. 打开 实验主页。

  2. 点击橙色按钮 "Access the lab"。系统会为你启动一个临时的虚拟环境。

第二步:进入登录页面

  1. 在实验室主页顶部,点击 "My account"。

2.你会看到一个标准的登录表单,包含 Username 和 Password 两个输入框。

第三步:实施注入

  1. 在 Username 输入框中输入:administrator'--

  2. 在 Password 输入框中可以输入任意字符(因为这部分会被注释掉,填什么都不影响)。

  3. 点击 "Log in"。

第四步:验证结果

  1. 如果操作正确,页面会跳转到账户详情页。

  2. 页面上方应显示 "Congratulations, you solved the lab!"。

  3. 此时你的身份已成功变为 administrator。

4. 常见问题与技巧 (Cheat Sheet)

关于注释符的差异

不同的数据库系统(DBMS)使用的注释符可能不同:

  • MySQL/PostgreSQL : -- (注意 -- 后面的空格) 或 #
  • Oracle : --
  • MS SQL Server : --

在本实验中,由于实验室环境的配置,-- 即可生效。

在 URL 中注入时要用 --+ 或 %20?

如果你是通过浏览器地址栏或 Burp Suite 手动修改请求:

  • 空格在 URL 中会被编码。
  • 输入 administrator'-- (末尾带空格)在发送时,为了防止空格被浏览器修剪掉,通常写成 administrator'--+ 或 administrator'--%20
  • %20是url编码后的空格

5. 防御方案

作为开发者,防止此类攻击的最佳实践是:

  1. 使用参数化查询 (Prepared Statements):这是最有效的防御手段,确保输入被视为数据而非代码。
  2. 避免拼接字符串:永远不要直接将用户输入拼接到 SQL 语句中。
  3. 使用成熟的 ORM 框架:如 Hibernate、Entity Framework 等,它们通常内置了防御机制。

宇宙级免责声明​​

🚨 重要声明:本文仅供合法授权下的安全研究与教育目的!🚨

1.合法授权:本文所述技术仅适用于已获得明确书面授权的目标或自己的靶场内系统。未经授权的渗透测试、漏洞扫描或暴力破解行为均属违法,可能导致法律后果(包括但不限于刑事指控、民事诉讼及巨额赔偿)。

2.道德约束:黑客精神的核心是建设而非破坏。请确保你的行为符合道德规范,仅用于提升系统安全性,而非恶意入侵、数据窃取或服务干扰。

3.风险自担:使用本文所述工具和技术时,你需自行承担所有风险。作者及发布平台不对任何滥用、误用或由此引发的法律问题负责。

4.合规性:确保你的测试符合当地及国际法律法规(如《计算机欺诈与滥用法案》(CFAA)、《通用数据保护条例》(GDPR)等)。必要时,咨询法律顾问。

5.最小影响原则:测试过程中应避免对目标系统造成破坏或服务中断。建议在非生产环境或沙箱环境中进行演练。

6.数据保护:不得访问、存储或泄露任何未授权的用户数据。如意外获取敏感信息,应立即报告相关方并删除。

7.免责范围:作者、平台及关联方明确拒绝承担因读者行为导致的任何直接、间接、附带或惩罚性损害责任。
🔐 安全研究的正确姿势:

✅ 先授权,再测试

✅ 只针对自己拥有或有权测试的系统

✅ 发现漏洞后,及时报告并协助修复

✅ 尊重隐私,不越界

⚠️ 警告:技术无善恶,人心有黑白。请明智选择你的道路。

希望这个教程对你有所帮助!记得负责任地进行安全测试。

相关推荐
CCIE-Yasuo19 分钟前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
这个DBA有点耶24 分钟前
内核级AI与多模融合:AI数据库在海外场景的落地要点
数据库·人工智能·架构
涛思数据(TDengine)29 分钟前
从工业本体到 AI 原生:TDengine 出席 2026 QCon 分享工业数据基础设施路径
大数据·数据库·人工智能·tdengine·工业
Jesse_EC36 分钟前
换乘次数最少的路径 SQL 查询详解与实战经验——从 WITH RECURSIVE 到 pgRouting
数据库·postgresql
工控丫丫41 分钟前
帆软看板中经常使用的公式函数及经常搭的组合
前端·javascript·数据库
La Pulga1 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
jimmyleeee1 小时前
Agent安全之九:OWASP ASI09 人机信任利用------当人类成为攻击链上最后一道被攻破的关口
人工智能·安全
其实防守也摸鱼2 小时前
信创安全竞赛知识总结与题库
大数据·网络·人工智能·算法·安全·php
li星野2 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
万联WANFLOW2 小时前
异地厂区视频监控远程运维:从组网到安全的实施要点
运维·网络·安全·企业组网·sdwan