BUUCTF 加固题 Ezsql WriteUp

文章目录

    • 想直接要加固代码的点这里
      • 题目
      • 一、查看
      • 二、进入目标机器加固
        • 修改前的文件:
        • 添加如下代码:
        • 修改后的文件
      • 三、Check

BUUCTF 加固题 Ezsql WriteUp_第1张图片

想直接要加固代码的点这里

题目

靶机地址解释:

第一行:目标机器 WEB 服务地址

第二行:目标机器 SSH 地址以及端口

第三行:Check 服务访问地址

修复方法:

  1. SSH 连接上目标机器,用户 ctf,密码 123456。
  2. 对目标机器上的服务进行加固。
  3. 访问 Check 服务的 /check进行 check。
  4. 若返回 True,则访问 /flag 可获得 /flag。
  5. 每次 check 后目标机器会重置。

一、查看

访问目标机器web服务地址,发现是一个登陆界面
BUUCTF 加固题 Ezsql WriteUp_第2张图片

利用万能密码登录成功

用户名:admin' or 1=1#

密码: 任意

BUUCTF 加固题 Ezsql WriteUp_第3张图片

登陆成功,本题就是让加固这个登陆界面,以防止sql注入即可获取flag。

二、进入目标机器加固

根据给的地址和端口ssh连接目标机器,进入/var/www/html目录

BUUCTF 加固题 Ezsql WriteUp_第4张图片


加固index.php,查看它的源码

修改前的文件:




    
    
    
    让我访问
    
    
    
    


我还可以教你,敦 dua 郎哦。

让我访问

query($sql); if (!$result) die(mysqli_error($mysqli)); $data = $result->fetch_all(); // 从结果集中获取所有数据 if (!empty($data)) { echo '登录成功!'; } else { echo "用户名或密码错误"; } } ?>


添加如下代码:

$username = addslashes($username);
$password = addslashes($password);

以下是W3school对 addslashes() 函数 的解释

addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
预定义字符是:

  • 单引号(’)
  • 双引号(")
  • 反斜杠(\)
  • NULL

该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串。

修改后的文件




    
    
    
    让我访问
    
    
    
    


我还可以教你,敦 dua 郎哦。

让我访问

query($sql); if (!$result) die(mysqli_error($mysqli)); $data = $result->fetch_all(); // 从结果集中获取所有数据 if (!empty($data)) { echo '登录成功!'; } else { echo "用户名或密码错误"; } } ?>

三、Check

再次进行万能密码登录发现已经不行了,然后就访问Check服务进行check

BUUCTF 加固题 Ezsql WriteUp_第5张图片

然后访问flag,发现flag已经出来了

BUUCTF 加固题 Ezsql WriteUp_第6张图片

你可能感兴趣的:(安全,web安全,安全,ctf,sql注入,漏洞修复)