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

SQLI LABS | Less-12 POST-Error Based-Double quotes-String-with twist

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

0x01:过关流程

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

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

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

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

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

可以看到,当我们传递 Payload 03 给服务器后端时,页面显示了报错信息,并且还返回了部分后端的查询模板,根据泄露的模板,我们可以推测目标后端的 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-12 POST-Error Based-Double quotes-String-with twist 成功过关。

0x02:源码分析

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

 <?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 型传参$passwd = $_POST['passwd'];​//logging the connection parameters to a file for analysis.$fp = fopen('result.txt', 'a');fwrite($fp, 'User Name:' . $uname . "\n");fwrite($fp, 'Password:' . $passwd . "\n");fclose($fp);​​// connectivity// 仅仅是将收到的参数两边加上了 " 号后,就拼接到了 SQL 模板中$uname = '"' . $uname . '"';$passwd = '"' . $passwd . '"';@$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 " ;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/59349.html

相关文章:

  • 第二十六节 直方图均衡化
  • S-Function
  • Python | Leetcode Python题解之第514题自由之路
  • Leetcode刷题笔记13
  • 安全日志里提示:C:\Windows\System32\dasHost.exe
  • mysql5.7.44 arm 源码编译安装
  • Linux常用命令1
  • python源码编译—Cython隐藏源码(windows)
  • [dasctf]howtodecompile
  • xlnt加载excel报错:‘localSheetId‘ expected
  • 【Spring】控制反转 依赖注入(本文内容由大模型生成)
  • 安卓基础001
  • HarmonyOS NEXT初级案例:网络数据请求
  • uni-app应用级生命周期和页面级生命周期
  • 动态IP是什么?
  • Qt Creator中的项目栏
  • 说说SQL调优
  • 软考系统分析师知识点二四:错题集11-20
  • 【FreeRL】TD3和SAC的实现
  • libharu 中文问题