2020-11-08

2 篇文章 0 订阅

BUU UPLOAD COURSE

从页面源代码可以知道有一个文件包含的漏洞

<form action="index.php?file=upload.php" method="post" enctype="multipart/form-data">

先上传一个图片马,然后包含图片马试试。
显然图片马被重命名的扩展名也变了。但是不妨碍打开它。
成功

[极客大挑战 2019]Upload

测试时发现可以上传 .phtml文件 和文件内容不能含有 <?

访问 info.phtml

http://2dc69a31-ef8e-4683-8e36-96235b32a56b.node3.buuoj.cn/upload/info.phtml

成功

[SUCTF 2019]CheckIn

测试发现,不能上传有文件扩展名中有ph字符串的文件,可以上传.htaccess文件,但是用到了exif_imagetype()函数来检查文件的格式。因为.htaccess文件格式非常严格,所以也用不了。

.user.ini.与.htaccess

.htaccess
仅能用于apache下,并且内容严格,不能有错误行,如:GIF89a

.user.ini


网上对这个的分析有很多我就不复述了。下面是参考的链接
https://xz.aliyun.com/t/6091#toc-1

利用条件:

1.服务器脚本语言为PHP
2.apache,iis,nginx都可以,只要服务器使用CGI/FastCGI模式
3.上传目录下要有可执行的php文件

上传一个.user.ini,配合 auto_prepend_file 或者 auto_append_file

GIF89a
auto_prepend_file=zjh.jpg

大概意思时:指定一个 zjh.jpg 文件,在执行某个php文件时会先把 zjh.jpg 包含到这个 php文件前面。


再上传图片马 zjh.jpg

只要访问 index.php 脚本就会先把 zjh.jpg 包含进去。
用蚁剑连接成功。

看源码发现用了

正则做 黑名单 。(出题人.htaccess少打了一个 c )
<? 做了检测
exif_imagetype()函数检验图片的正确性

$extension = substr($name, strrpos($name, ".") + 1);
    if (preg_match("/ph|htacess/i", $extension)) {
        die("illegal suffix!");
    }
    if (mb_strpos(file_get_contents($tmp_name), "<?") !== FALSE) {
        die("&lt;? in contents!");
    }
    $image_type = exif_imagetype($tmp_name);
    if (!$image_type) {
        die("exif_imagetype:not image!");
    }

[ACTF2020 新生赛]Upload

JS检验+黑名单漏洞

前端有一个checkFile()的JS函数检验上传文件的扩展名,修改一下绕过。
burp suite黑盒发现可以上传 .phtml 文件。
直接上传图片马,burp suite 抓包改后缀为 .phtml ,成功。

看源码

$file_name = $_FILES['upload_file']['name'];
$ext = pathinfo($file_name,PATHINFO_EXTENSION);
if(in_array($ext, ['php', 'php3', 'php4', 'php5'])) {
	exit('nonono~ Bad file!');
}

显然就是黑名单不全面。

[GXYCTF2019]BabyUpload

考点:

content-type检验
<? 的检验
.htaccess配置文件的上传

看源码:

if(preg_match("/ph/i", strtolower($uploaded_ext))){
        die("后缀名不能有ph!");
    }
    else{
        if ((($_FILES["uploaded"]["type"] == "
            ") || ($_FILES["uploaded"]["type"] == "image/jpeg") || ($_FILES["uploaded"]["type"] == "image/pjpeg")) && ($_FILES["uploaded"]["size"] < 2048)){
            $content = file_get_contents($uploaded_tmp);
            if(preg_match("/\<\?/i", $content)){
                die("诶,别蒙我啊,这标志明显还是php啊");
            }
            else{
                mkdir(iconv("UTF-8", "GBK", $target_path), 0777, true);
                move_uploaded_file($uploaded_tmp, $t_path);
                echo "{$t_path} succesfully uploaded!";
            }
        }
        else{
            die("上传类型也太露骨了吧!");
        }
    }

正则匹配了 后缀名(不能包含 ph )、文件内容不能有 <?content-type 检验

[MRCTF2020]你传你🐎呢

上传 .htaccess 配置文件
上传图片马

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值