[ACTF2020 新生赛]Upload

[ACTF2020 新生赛]Upload

  • 考点 前端后缀名绕过的方式 php可执行文件后缀名的种类

  • 主界面 有一个灯泡,提示你上传文件,前端有验证,只能上传 jpg|png|gif

    在这里插入图片描述

  • 这个时候我们有两种方式绕过前端验证

    • 直接在源码里把验证函数删掉

      在这里插入图片描述

    • 先把文件改成jpg格式的,然后点击upload,用burp拦截,再重新改为原本格式

  • 我们选择第一种方式,试着上传一下php文件,内容可以先用phpinfo() 测试一下能不能成功

    在这里插入图片描述

  • 页面提示nonono bad file!,看来后端也对后缀名进行了检查,那么我们就用phtml试试,常用的php后缀名绕过见[极客大挑战 2019]Upload 成功上传

    在这里插入图片描述

  • 打开后,成功获得执行了phpinfo()

    在这里插入图片描述

  • 接下来只要编写简单的php一句话木马就行!后端没有对文件内容进行任何检查。用蚁剑连接后成功在根目录得到flag。

  • 在这里插入图片描述

  • 我们在服务器上找到了.htaccess文件,里面有以下内容

    <FilesMatch \.phtml$>
    	SetHandler application/x-httpd-php
    </FilesMatch>
    
  • 可以看到,这里服务器手动把phtml后缀名设置为了php可执行文件,我推测phtmlpht 这种后缀只有在配置文件里添加之后才能生效,正常应该是不能的,因为在这道题里,pht后缀无法正常执行。

  • 同时附上index.php 中的内容,我们可以看到,它在后端也过滤了一些常用的后缀名

    <?php
    	error_reporting(0);
    	//设置上传目录
    	define("UPLOAD_PATH", "./uplo4d");
    	$msg = "Upload Success!";
    	if (isset($_POST['submit'])) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $file_name = $_FILES['upload_file']['name'];
            $ext = pathinfo($file_name,PATHINFO_EXTENSION);
            if(in_array($ext, ['php', 'php3', 'php4', 'php5'])) {
    	        exit('nonono~ Bad file!');
        	}
            $new_file_name = md5($file_name).".".$ext;
            $img_path = UPLOAD_PATH . '/' . $new_file_name;
            if (move_uploaded_file($temp_file, $img_path)){
                $is_upload = true;
            } else {
                $msg = 'Upload Failed!';
            }
            echo '<div style="color:#F00">'.$msg." Look here~ ".$img_path."</div>";
        }
    ?>
    
  • 参考链接

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值