CTFhub uploadddd

这个题看着是一个文件上传题,看着挺正常,可以上传php文件,但是没返回路径,有点懵
CTFhub uploadddd_第1张图片
所以肯定得找其他方法取处理,去寻找它的上传路径,可能是源码泄露,这就涉及到之前了解的源码泄露的种类了。
SVN泄露,vim缓存泄露,git泄露。
贴一下以前记录的探测几种泄露方法的截图
在这里插入图片描述CTFhub uploadddd_第2张图片

试了一下,发现是vim缓存泄露
CTFhub uploadddd_第3张图片
CTFhub uploadddd_第4张图片
利用vim -r 命令恢复了index源码


```php
<?php
if (isset($_POST['submit'])){
    $file_path = "uploads/";
    $file_name = date("YmdHis") . rand(0,999) . ".php";
    move_uploaded_file($_FILES["file"]["tmp_name"], $file_path . $file_name);
    echo "上传成功!";
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Web03</title>
</head>
<body>
    <form action="index.php" method="post" enctype="multipart/form-data">
        <input type="file" name='file'>
        <input type="submit" name="submit" value="上传" />
    </form>
</body>
</html>

$file_name是随机生成的,那破解点必然在这里。利用 move_uploaded_file的漏洞去完成这个功能,差不多一年前做过这个题,这里就直接凭记忆去做了

如何想办法让这个函数上传上去的是我们想要的文件名和路径
move_uploaded_file($_FILES[“file”][“tmp_name”], $file_path . $file_name);
这个函数用 $file_path . $file_name 覆盖上传的文件

正常情况下这个函数的目的是检查文件格式,然后放到指定位置,可以通过截断去构造自己想要的路径文件。但是这里对文件名完全进行了随机数处理,这样这个题就没法这样做了,只能猜测文件名,先自己在环境下试试这些函数的特点
CTFhub uploadddd_第5张图片
经过测试这个函数的结果是随着时间在变化的,后面秒的部分不太好掌握,只能用爆破的方法去尝试了
看了下别人writeup,可以用burp的返回时间来对时间作判断
在这里插入图片描述
文件名一定是 (这里要以burp上的时间为准(英国标准时间,服务器标准时间))20200926023836+一个随机数(0-999)+.php
可以直接用脚本进行测试,也可以用burp加字典
在这里插入图片描述找到了该文件,用蚁剑连接
CTFhub uploadddd_第6张图片

你可能感兴趣的:(CTFhub技能树)