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

✅ 先授权,再测试

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

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

✅ 尊重隐私,不越界

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

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

相关推荐
2603_969579284 小时前
怎样取消电脑上的自动备份?不同来源的关闭方法
学习
郝学胜-神的一滴4 小时前
Web安全入门:读懂Web世界里的攻防
前端·网络·后端·安全·web安全·hibernate
学逆向的4 小时前
C 浮点数e(科学计数法)
c语言·开发语言·网络安全
CV@CV4 小时前
世界模型环境预测与内在表征基础原理
人工智能·学习·边缘计算·量子计算·具身智能
Novproxy_Z4 小时前
账号批量封禁复盘:从日志定位是 IP 关联还是行为指纹关联
网络·数据库·tcp/ip
知识分享小能手4 小时前
C学习教程,从入门到精通,C语言数组 —— 知识点详解(8)
c语言·学习·算法
看着博客敲代码4 小时前
enum4linux 报 Server doesn‘t allow session 与 SMB 主机信息枚举
linux·安全·网络安全
我喜欢就喜欢4 小时前
IT疑难杂症诊疗室:从现象到根因的系统排查指南
数据库
卿卿的产品经理日记4 小时前
【AI产品经理实战】Day 34|计算机科学速成②:从水流开关到 Unicode,把整个电脑拆成一长串 0 和 1
人工智能·笔记·科技·学习·产品经理
其实防守也摸鱼4 小时前
Codex 下载与本地部署实战指南
linux·服务器·前端·数据库·算法·ai