CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查)

news/2024/5/17 10:12:52

CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查)

文章目录

  • CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查)
      • 前端验证—文件头检查
          • 题目解析
        • 各种文件头标志

前端验证—文件头检查

题目考的是:png,gif等文件在文件的头部都会有其专有的字符,都确定这是什么类型的文件

比如用winhex打开,可以看到png专属的文件头信息。

解题方法:

1、制作图片木马

2、上传一个图片,使用bp抓包,在图片代码末尾中插入一句话木马,并修改filename为php文件

在这里插入图片描述

3、使用编辑器010editor、weihex等工具,在图片末尾插入一句话木马,抓包,并修改filename为php文件

在这里插入图片描述

题目解析

先上传一个php文件,发现提示

在这里插入图片描述

PHP文件被拦截了,然后我们看回题目,文件头检查,那么文件头是什么呢

在这里插入图片描述

简单来说,就是每个文件的最开头部分,就是文件头,他代表了这个文件的是属于什么类型,例如

我们随便打开一个png格式的文件

在这里插入图片描述

在这里插入图片描述

右侧开头%PNG就是这个文件的文件头,这也代表了这个文件是一个png文件,打开一个jpg文件
在这里插入图片描述

由此可见,只要是相同类型的文件,他的文件头就是一样的,这样代表了这个文件是属于什么类型,既然本题用到的是文件头检查,那我们制作一个图片马,将我们的一句话代码放入图片里面然后进行上传。

可以自己用画图工具做一个简单的png图片,一定要简单,做一个简朴的图,否则一些乱码会使php报错

我们先创造一个名为1.png的图片,然后写一个名为1.php的一句话代码,把他们放到同一目录下,用cmd生成一个名为2.php的图片马

在这里插入图片描述

copy 1.png/b+1.php/a 2.php

然后将此木马进行上传,并用bp抓包

在这里插入图片描述

将此段改为图片格式(MIME绕过,这段代表着一个文件的格式)

然后进行放包,文件上传成功

在这里插入图片描述

访问,发现代码执行

在这里插入图片描述

使用蚁剑连接,寻找flag

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

各种文件头标志
JPEG (jpg),文件头:FFD8FFPNG (png),文件头:89504E47GIF (gif),文件头:47494638TIFF (tif),文件头:49492A00Windows Bitmap (bmp),文件头:424DCAD (dwg),文件头:41433130Adobe Photoshop (psd),文件头:38425053Rich Text Format (rtf),文件头:7B5C727466XML (xml),文件头:3C3F786D6CHTML (html),文件头:68746D6C3EEmail [thorough only] (eml),文件头:44656C69766572792D646174653AOutlook Express (dbx),文件头:CFAD12FEC5FD746FOutlook (pst),文件头:2142444EMS Word/Excel (xls.or.doc),文件头:D0CF11E0MS Access (mdb),文件头:5374616E64617264204AWordPerfect (wpd),文件头:FF575043Postscript (eps.or.ps),文件头:252150532D41646F6265Adobe Acrobat (pdf),文件头:255044462D312EQuicken (qdf),文件头:AC9EBD8FWindows Password (pwl),文件头:E3828596ZIP Archive (zip),文件头:504B0304RAR Archive (rar),文件头:52617221Wave (wav),文件头:57415645AVI (avi),文件头:41564920Real Audio (ram),文件头:2E7261FDReal Media (rm),文件头:2E524D46MPEG (mpg),文件头:000001BAMPEG (mpg),文件头:000001B3Quicktime (mov),文件头:6D6F6F76Windows Media (asf),文件头:3026B2758E66CF11MIDI (mid),文件头:4D5468642、从winhex中取出的文件头列表File Type ExtensionsHeaderJPEG jpg;jpeg 0xFFD8FFPNG png 0x89504E470D0A1A0AGIF gif GIF8TIFF tif;tiff 0x49492A00TIFF tif;tiff 0x4D4D002ABit map bmp BMAOL ART art 0x4A47040E000000AOL ART art 0x4A47030E000000PC Paintbrush pcx 0x0A050108Graphics Metafile wmf 0xD7CDC69AGraphics Metafile wmf 0x01000900Graphics Metafile wmf 0x02000900Enhanced Metafile emf 0x0100000058000000Corel Draw cdr CDRCAD dwg 0x41433130Adobe Photoshop psd 8BPSRich Text Format rtf rtfXML xmlHTML html;htm;PHP;php3;php4;phtml;shtml typeEmail eml Delivery-date:Outlook Express dbx 0xCFAD12FEOutlookpst!BDNMS Office/OLE2doc;xls;dot;ppt;xla;ppa;pps;pot;msi;sdw;db 0xD0CF11E0A1B11AE1MS Access mdb;mda;mde;mdt Standard JWordPerfect wpd 0xFF575043OpenOffice Writer sxw writerOpenOffice Calc sxc calcOpenOffice Math sxm mathOpenOffice Impress sxi impressOpenOffice Draw sxd drawAdobe FrameMaker fm


http://www.mrgr.cn/p/61372075

相关文章

利用Python进行数据分析 原书第2版 (Wes McKinney)pdf下载

链接:https://pan.baidu.com/s/18MOC0666S-EX_0ks4ivR2g 提取码:rmkk 本书由Python pandas项目创始人Wes McKinney亲笔撰写,详细介绍利用Python进行操作、处理、清洗和规整数据等方面的具体细节和基本要点。第2版针对Python 3.6进行全面修订和更新,涵盖新版的pandas、NumPy…

<计算机网络自顶向下> 多路复用与解复用

多路复用/解复用 端口号区分进程到进程多路解复用工作原理 解复用作用:TCP或者UDP实体采用哪些信息,将报文段的数据部分交给正确的socket,从而交给正确的进程主机收到IP数据报 每个数据报有源IP地址和目标地址每个数据报承载一个传输层报文段…

算法:期望场景;鲁棒优化

部分代码 for i1:T stst[D_DGk(i)*min_P_DG<P_DGk(i)<D_DGk(i)*max_P_DG]; end for i2:T indicatorD_DGk(i)-D_DGk(i-1); rangei:min(T,iT_up-1); st st[D_DGk(range)>indicator]; end for i2:T indicatorD_DGk(i-1)-D_DGk(i); rangei:min(T…

神经网络训练速度相关学习--1

2024-04-18 程序执行的调用顺序: cpu接收到指令,执行——从存储器中加载数据到cpu,对数据进行预处理——预处理后的数据传输gpu——gpu执行运算——将运算结果存储到存储器——开始新一轮batch运算(每一次计算都需要从内存中读取数据) 另外参考:先将硬盘中的数据读取到内…

LeetCode——572—— 另一棵树的子树

1.题目 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/subtree-of-another-tree/ 给你两棵二叉树 root 和 subRoot …

08-接口文档和JWT

接口文档 楔子 接口文档对于协调前后端开发非常重要,可以避免因为开发习惯不同而导致的意外情况。在项目中,如果前后端开发各自为战,可能会出现不一致的情况。因此,接口文档可以约束双方,确保他们按照统一的规范进行开发,从而提高协同开发的效率和一致性。 规范 接口文档…

“趣”学架构

搭系统先搭架子 对于多个业务需求,都有打印入参、检验入参、业务逻辑、打印出参、处理异常的流程。 方法1:做业务逻辑的聚类 但内容经常不同,很难去做大范围的聚类 方法2:模版方法模式 用抽象类做约束,必须实现这些接口伪代码 弊端业务需求会导致代码经常多一个功能,改一…

Spring 源码阅读(一)环境搭建

注意事项:使用 2024-03-14 发布的 Spring 5.3.33 版本 IDE 工具使用了 Intellij IDEA,同时为了简化不必要的内容没单独配置 Gradle 环境 JDK 版本采用 Eclipse Temurin 1.8/11 均可下载源码 下载 SpringFramework 源码,本次选择 5.3.33 版本,发布日期 2024-03-14,通过 Int…

4.18作业

顺序栈&#xff1a; #include "seq_stack.h" seq_p creat_stack() //从堆区申请顺序栈的空间 {seq_p S(seq_p)malloc(sizeof(seq_stack));if(SNULL){printf("空间申请失败\n");return NULL;}bzero(S->data,sizeof(S->data));S->top-1;return S; …

性能测试——性能测试-常见linux性能指标监控命令

vmstat命令: top命令: free -h命令: df -h命令: mpstat命令: sar – 收集和报告系统活动

Apache Zeppelin 命令执行漏洞复现(CVE-2024-31861)

0x01 产品简介 Apache Zeppelin 是一个让交互式数据分析变得可行的基于网页的开源框架&#xff0c;Zeppelin提供了数据分析、数据可视化等功能&#xff0c; 0x02 漏洞概述 Apache Zeppelin 中代码生成控制不当&#xff08;“代码注入”&#xff09;漏洞。攻击者可以使用 She…

这个网络爬虫代码,拿到数据之后如何存到csv文件中去?

大家好,我是皮皮。 一、前言 还是昨天的那个网络爬虫问题,大佬们,帮忙看看这个网络爬虫代码怎么修改?那个粉丝说自己不熟悉pandas,用pandas做的爬虫,虽然简洁,但是自己不习惯,想要在他自己的代码基础上进行修改,获取数据的代码已经写好了,就差存储到csv中去了。 他的…

免费的 ChatGPT、GPTs、AI绘画(国内版)

&#x1f525;博客主页&#xff1a;白云如幻❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ ChatGPT3.5、GPT4.0、GPTs、AI绘画相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚…

spring boot 集成rocketMq + 基本使用

1. RocketMq基本概念 1. NameServer 每个NameServer结点之间是相互独立&#xff0c;彼此没有任何信息交互 启动NameServer。NameServer启动后监听端口&#xff0c;等待Broker、Producer、Consumer连接&#xff0c; 相当于一个路由控制中心。主要是用来保存topic路由信息&#…

使用Java调用音乐开放API,并进行播放

使用Java调用音乐开放API&#xff0c;并进行播放 背景描述 电脑没有下载音乐软件&#xff0c;使用网页播放又不太方便&#xff0c;所有就想着使用Java语言直接调用音乐开放API&#xff0c;然后进行播放音乐。 具体代码如下&#xff0c;包含了注释 package com.lowkey.comple…

林草资源管理系统:构筑绿色长城,守护自然之美

在全球气候变化和生态环境恶化的背景下,森林和草原资源的保护、恢复和合理利用显得尤为重要。林草资源管理系统的建立,旨在通过现代信息技术手段,提升林草资源管理的效率和质量,确保自然资源的可持续发展。 项目背景 森林和草原是地球上重要的生态系统,它们不仅为人类提供…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十二 简单把视频的水印去掉效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十二 简单把视频的水印去掉效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十二 简单把视频的水印去掉效果 一、简单介绍 二、简单把视频的水印去掉效果实现原理 …

线程池学习(通俗易懂)

线程池 线程池是什么ThreadPoolExecutor模拟实现线程池结语 线程池是什么 假设我们要频繁的创建线程和销毁线程,但是创建线程和销毁线程是有成本的. 所以我们可以提前创建一批线程,后面需要使用的时候,直接拿就可以了,这就是线程池. 当线程不再使用的时候,就归还到池子里.为什…

第五节 极限运算法则

第五节 极限运算法则本节讨论极限的求法,主要是建立极限的四则运算法则和复合函数的极限运算法则,利用这些法则,可以求某些函数的极限 定理1: 两个无穷小的和是无穷小。用数学归纳法可证:有限个无穷小之和也是无穷小定理2: 有界函数与无穷小的乘积是无穷小.推论1: 常数与无…