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

SQLI LABS | Less-51 GET-Error Based-ORDER BY CLAUSE-String-Stacked Injectiion

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

0x01:过关流程

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

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

本关注入点很好测试,传入 1' 会显示后端的报错信息(其实在传递数字的时候就不对劲了,当你传入 12 时会发现页面没有变化,证明其后端把你传递的内容未能识别或者识别成一样的东西了,出现这种情况,多半是参数被 ' " 这类特殊符号包裹了,导致丢失其原本含义):

根据上面的报错信息,结合 SORT 的功能,我们可以推测出其后端的 SQL 模板如下:

 select * from users order by '$_GET["sort"]';

所以,攻击 Payload 如下:

 -- 修改 id=1 的用户的账号
 1';update users set username='HACKER' where id=1;select '1

如上,我们已经能够修改数据库中任意的数据了。至此,SQLI LABS Less-51 GET-Error Based-ORDER BY CLAUSE-String-Stacked Injectiion 成功过关。

0x02:源码分析

下面是 SQLI LABS Less-51 GET-Error Based-ORDER BY CLAUSE-String-Stacked Injectiion 后端的部分源码,以及笔者做的笔记:

<?php
 include("../sql-connections/sqli-connect.php");
 error_reporting(0);
 $id = $_GET['sort'];
 if (isset($id)) {
     //logging the connection parameters to a file for analysis.
     $fp = fopen('result.txt', 'a');
     fwrite($fp, 'SORT:' . $id . "\n");
     fclose($fp);
 ​
     // 与上一关的区别也就在这了,被 ' 号包裹了
     $sql = "SELECT * FROM users ORDER BY '$id'";
     /* execute multi query */
     if (mysqli_multi_query($con1, $sql)) {
 ​
 ?>
         <center>
             <font color="#00FF00" size="4">
 ​
                 <table border=1'>
                     <tr>
                         <th>&nbsp;ID&nbsp;</th>
                         <th>&nbsp;USERNAME&nbsp; </th>
                         <th>&nbsp;PASSWORD&nbsp; </th>
                     </tr>
             </font>
 </font>
 <?php
         /* store first result set */
         if ($result = mysqli_store_result($con1)) {
             while ($row = mysqli_fetch_row($result)) {
                 echo '<font color= "#00FF11" size="3">';
                 echo "<tr>";
                 echo "<td>";
                 printf("%s", $row[0]);
                 echo "</td>";
                 echo "<td>";
                 printf("%s", $row[1]);
                 echo "</td>";
                 echo "<td>";
                 printf("%s", $row[2]);
                 echo "</td>";
                 echo "</tr>";
                 echo "</font>";
             }
         }
         echo "</table>";
     } else {
         echo '<font color= "#FFFF00">';
         print_r(mysqli_error($con1));
         echo "</font>";
     }
 } else {
     echo "Please input parameter as SORT with numeric value<br><br><br><br>";
     echo "<br><br><br>";
     echo '<img src="../images/Less-51.jpg" /><br>';
 }
 ?>

http://www.kler.cn/a/398279.html

相关文章:

  • 卷径计算(基于卷径变化微分方程计算实时卷径)
  • IC 脚本之VIM 记录
  • PCHMI串口接收实验
  • PostgreSQL TRUNCATE TABLE
  • 2024-11-16-机器学习方法:无监督学习(1) 聚类(上)
  • 《应用数学学报》
  • 图像分割——Hough变换检测法
  • C语言——判断是不是字母
  • YOLOv7-0.1部分代码阅读笔记-train.py
  • SQLite 安装指南
  • MAC上的Office三件套报53错误解决方案(随笔记)
  • 【MogDB】MogDB5.2.0重磅发布第八篇-支持PLSQL编译全局缓存
  • 如何在 Ubuntu 上安装 Mattermost 团队协作工具
  • 【ArcGIS微课1000例】0127:计算城市之间的距离
  • 9.2 使用haarcascade_frontalface_default.xml分类器检测视频中的人脸,并框出人脸位置。
  • 企业项目级IDEA设置类注释、方法注释模板(仅增加@author和@date)
  • 你的服务器缓存中毒过么?
  • Essential Cell Biology--Fifth Edition--Chapter one (8)
  • ssm126基于HTML5的出租车管理系统+jsp(论文+源码)_kaic
  • 牛客周赛第一题2024/11/17日
  • 深入理解Flutter生命周期函数之StatefulWidget(一)
  • 【Qt聊天室】客户端实现总结
  • 华为欧拉系统使用U盘制作引导安装华为欧拉操作系统
  • Kubernetes 10 问,测测你对 k8s 的理解程度
  • 【设计模式】入门 23 种设计模式(代码讲解)
  • 在linux里如何利用vim对比两个文档不同的行数