CTF修仙录

web-CheckIn

打开题目,给了github上面的源码地址
在这里插入图片描述可以看到/var/目录下的一些文件,注意这并不是在网站的根目录
查看一下clean.sh的内容
在这里插入图片描述
清理php中的seesions下的目录文件和uploads下的文件
第二个default文件里面没有什么内容
第三flag文件
在这里插入图片描述
看着像flag,实则不是,就逗逗你!
打开html文件件下的index.php文件
发现就是index.php文件的源码,直接审计一波

<?php
// error_reporting(0);
$userdir = "uploads/" . md5($_SERVER["REMOTE_ADDR"]);
if (!file_exists($userdir)) {
    mkdir($userdir, 0777, true);//上传根据远程md5ip创建一个文件夹
}
file_put_contents($userdir . "/index.php", "");//然后在此文件夹下创建一个index.php的文件,内容为空
if (isset($_POST["upload"])) {
    $tmp_name = $_FILES["fileUpload"]["tmp_name"];
    $name = $_FILES["fileUpload"]["name"];
    if (!$tmp_name) {
        die("filesize too big!");
    }
    if (!$name) {
        die("filename cannot be empty!");
    }//进行正常文件判断,大小和不能为空
    $extension = substr($name, strrpos($name, ".") + 1);//取出上传文件的后缀名
    if (preg_match("/ph|htacess/i", $extension)) {//正则匹配,/i是不区分大小写,所有什么大小写绕过,后面加数字都不行了
        die("illegal suffix!");
    }
    if (mb_strpos(file_get_contents($tmp_name), "<?") !== FALSE) {//对文件内容进行正则匹配,<?php   会被检测到
        die("&lt;? in contents!");
    }
    $image_type = exif_imagetype($tmp_name);//判断是否为图片,这个函数,可以在文件里加一个图片幻术的头绕过
    if (!$image_type) {
        die("exif_imagetype:not image!");
    }
    $upload_file_path = $userdir . "/" . $name;
    move_uploaded_file($tmp_name, $upload_file_path);//上传
    echo "Your dir " . $userdir. ' <br>';
    echo 'Your files : <br>';
    var_dump(scandir($userdir));//打印出上传路径下的有那些文件
}

基本理清思路,这里思考一下,为啥要在上传路径下生成一个index.php文件?
而且不能上传htacess
这里我想到了.user.ini文件
此文件作用和htacess一样,都能对当下的文件设置环境变量
在这里插入图片描述

这里是引用

直接构造.user.ini文件内容为

GIF89a
auto_append_file=c.jpg

然后构造图片马
GIF89a?

然后上传图片马,上传.user.ini,然后访问上传路径下的index.php
在这里插入图片描述发现本来为空的index.php有了我图片马的文件头,执行了php马

然后菜刀,怎么都连不上,应该是禁止了

然后就写直接读取flag php代码
根据源码要上跳三层目录
构造payload
GIF89a?

成功读到flag文件

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0XAXSDD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值