【BUUCTF 加固题】Ezsql 速通

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

前言

一、访问web网址

二、ssh远程登录

三、加固网站源代码


前言

靶机地址解释: 第一行:目标机器 WEB 服务地址 第二行:目标机器 SSH 地址以及端口 第三行:Check 服务访问地址

修复方法:

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

一、访问web网址

Your flag: flag{c2a05bc6-e9fa-42df-a85f-caef91274706}

发现一个登录页面,像一般出现登录框的,我们可以尝试sql注入和万能密码以及弱口令进行登录尝试。

我们这里利用sql注入万能密码,成功登录进来了,这里的加固题目,就是让我们加固sql,防止sql注入登录进来。

'OR'1'='1

二、ssh远程登录

成功利用kali进行远程ssh登录

┌──(root💀kali)-[~/桌面]
└─# ssh ctf@761c01af-d64d-4dc4-9be2-e7c7859386fb.node5.buuoj.cn -p 27133
The authenticity of host '[761c01af-d64d-4dc4-9be2-e7c7859386fb.node5.buuoj.cn]:27133 ([117.21.200.176]:27133)' can't be established.
ECDSA key fingerprint is SHA256:IcIkotEo1ncKwQgZHgbL2vJ7nio6zTWCWWxQhRYCXiU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[761c01af-d64d-4dc4-9be2-e7c7859386fb.node5.buuoj.cn]:27133,[117.21.200.176]:27133' (ECDSA) to the list of known hosts.
ctf@761c01af-d64d-4dc4-9be2-e7c7859386fb.node5.buuoj.cn's password: 
Linux web2 4.19.221-0419221-generic #202112141049 SMP Tue Dec 14 11:54:51 UTC 2021 x86_64The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
$ id
uid=1000(ctf) gid=1000(ctf) groups=1000(ctf)
$ 

/var/www/html目录下,查看index.php,查看网站源代码

三、加固网站源代码

网站的源代码,有危害主要是在下面的php代码中

//SQL 注入攻击:代码中直接使用用户输入的用户名和密码拼接成 SQL 查询语句,这会导致 SQL 注入漏洞。攻击者可以通过在输入中插入恶意的 SQL 代码来绕过认证,甚至获取敏感数据。例如,攻击者可以输入 ' OR 1=1; -- 作为密码,这会使查询条件始终为真,从而实现万能密码登录。

<?php
error_reporting(0);
include 'dbConnect.php';
$username = $_GET['username'];
$password = $_GET['password'];
if (isset($_GET['username']) && isset($_GET['password'])) {$sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";$result = $mysqli->query($sql);if (!$result)die(mysqli_error($mysqli));$data = $result->fetch_all(); // 从结果集中获取所有数据if (!empty($data)) {echo '登录成功!';} else {echo "用户名或密码错误";}
}
?>

php代码修改成如下代码:

在修改后的代码中,使用了参数化查询来获取用户的输入。首先,使用 prepare() 方法准备了一个带有占位符的 SQL 查询语句。然后,使用 bind_param() 方法将用户输入的变量绑定到查询语句的占位符上,确保了变量值不会被解释为 SQL 代码。最后,使用execute()方法执行查询。

<?php
error_reporting(0);
include 'dbConnect.php';$username = $_GET['username'];
$password = $_GET['password'];if (isset($username) && isset($password)) {// 使用参数化查询来防止 SQL 注入$sql = "SELECT * FROM users WHERE username = ? AND password = ?";$stmt = $mysqli->prepare($sql);$stmt->bind_param("ss", $username, $password);$stmt->execute();$result = $stmt->get_result();if (!$result) {die($mysqli->error);}$data = $result->fetch_all(); // 从结果集中获取所有数据if (!empty($data)) {echo '登录成功!';} else {echo "用户名或密码错误";}$stmt->close();
}
?>

再尝试利用 'OR'1'='1 进行登录,发现登录不成功了

然后先访问这个目录,进行靶场重置

然后再进行访问/flag ,就可以看到flag值了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/471356.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu22.04@laptop OpenCV Get Started: 010_blob_detection

ubuntu22.04laptop OpenCV Get Started: 010_blob_detection 1. 源由2. blob应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 重点分析3.1 Threshold3.2 Area3.3 Circularity3.4 Convexity3.5 Inertia Ratio 4. 总结5. 参考资料6. 补充 1. 源由 Blob是图像中的一组连接像素&#…

Dynamo处理点云数据

Hello大家好&#xff01;我是九哥~ 随着三维激光点云扫描技术的推广&#xff0c;越来越多的项目中应用到了三维激光点云扫描。基于三维点云数字化模型&#xff0c;在建筑工程项目设计、施工和改造等过程中&#xff0c;能够完成实测实量、偏差检测、变形监测、模型对比、场地构建…

社区商铺开什么店最好?从商业计划书到实际运营

在社区商铺开店&#xff0c;选择适合的业态是成功的关键。作为一名开店 5 年的资深创业者&#xff0c;我想分享一些关于社区店的干货和见解。 这篇文章&#xff0c;我用我的项目给大家举例子&#xff01; 鲜奶吧作为一种新兴的业态&#xff0c;以提供新鲜、健康的乳制品为主&…

MATLAB知识点:exprnd函数(★★☆☆☆)生成指数分布的随机数

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章&#xff1a;课后习题讲解中拓展的函数 在讲解第三…

【深入理解BEVFormer】BEVFormer

任务场景 多模态融合和多传感器融合 BEV&#xff1a;鸟瞰图 这个特征空间与每个视角都相关 早期是用后融合&#xff0c;目前比较流行的是特征级融合 自身运动补偿&#xff1a;如果按照像素点进行特征对齐&#xff0c;需要指定偏移量 x y两个方向 特征空间是自己定义的&#xf…

OpenHarmony—UIAbility组件生命周期

概述 当用户打开、切换和返回到对应应用时&#xff0c;应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调&#xff0c;通过这些回调可以知道当前UIAbility实例的某个状态发生改变&#xff0c;会经过UIAbility实例的创建和销毁&#xff0c;…

C++中类的6个默认成员函数 【拷贝构造函数】

文章目录 拷贝构造函数的使用拷贝构造对于自定义类型【浅拷贝】深拷贝拷贝构造函数典型调用场景 拷贝构造函数的使用 在前几章学习对象的时候&#xff0c;我们有的时候需要一个与已存在对象一某一样的新对象 那在创建对象时&#xff0c;可否创建一个与已存在对象一某一样的新对…

CV | Segment Anything论文详解及代码实现

本文主要是详解解释了SAM的论文部分以及代码实现~ 论文&#xff1a;2023.04.05_Segment Anything 论文地址&#xff1a;2304.02643.pdf (arxiv.org) 代码地址&#xff1a;facebookresearch/segment-anything: The repository provides code for running inference with the Seg…

命令行参数和环境变量

命令行参数 命令行参数是在用户在命令行中输入命令时&#xff0c;跟随命令一起输入的一些附加信息。这些参数可以用来配置命令的行为或传递一些数据给命令。 让同样的程序在不同的命令行参数下运行出不同的结果&#xff01; 将这些命令和参数可以传给 main 函数生&#xff0…

互联网时代的文学复兴:中文诗词大数据分析 | 开源日报 No.170

chinese-poetry/chinese-poetry Stars: 45.4k License: MIT 最全的中文诗歌古典文集数据库&#xff0c;包含 5.5 万首唐诗、26 万首宋诗、2.1 万首宋词和其他古典文集。数据来源于互联网。该开源项目旨在通过 JSON 格式分发&#xff0c;方便用户开始自己的项目&#xff0c;并借…

C++初阶:适合新手的手撕list(模拟实现list)

上次讲了常用的接口&#xff1a;今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.空参构造函数&#xff08;constructor)3.完善迭代器&#xff08;iterator&#xff09;(begin(),end())4.List Capacity&#xff08;size(),empty())4.增删改查(push_back,pop_back,pop_f…

Selenium实战教程系列(三)--- Selenium中的动作

Selenium中针对元素进行的动作在代码中可以分为两类&#xff1a; Selenium::WebDriver::ActionBuilder类中的动作方法Selenium::WebDriver::Element类中的动作方法 其中ActionBuilder类中的动作方法比较丰富&#xff0c;基本涵盖了所有可以进行的操作。 而Element类的动作比较…