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

文件上传之图片马文件头绕过(upload-labs通关笔记-第14关)

文件上传之图片马文件头绕过(upload-labs通关笔记-第14关)

系列目录

upload-labs通关笔记-第1关 文件上传之前端绕过(3种渗透方法)

upload-labs通关笔记-第2关 文件上传之MIME绕过-CSDN博客

upload-labs通关笔记-第3关 文件上传之黑名单绕过-CSDN博客

upload-labs通关笔记-第4关 文件上传之.htacess绕过-CSDN博客

upload-labs通关笔记-第5关 文件上传之.ini绕过-CSDN博客

upload-labs通关笔记-第6关 文件上传之大小写绕过-CSDN博客

upload-labs通关笔记-第7关 文件上传之空格绕过-CSDN博客

upload-labs通关笔记-第8关 文件上传之点绕过-CSDN博客

upload-labs通关笔记-第9关 文件上传之::$data绕过-CSDN博客

upload-labs通关笔记-第10关 文件上传之点多重过滤(空格点绕过)

upload-labs通关笔记-第11关 文件上传之双写绕过-CSDN博客

upload-labs通关笔记-第12关 文件上传之白名单GET法绕过

upload-labs通关笔记-第13关 文件上传之白名单POST法绕过

upload-labs通关笔记-第14关 文件上传之图片马文件头绕过

upload-labs通关笔记-第15关 文件上传之图片马getimagesize绕过

upload-labs通关笔记-第16关 文件上传之图片马exif_imagetype绕过

upload-labs通关笔记-第17关文件上传之二次渲染-CSDN博客

upload-labs通关笔记-第18关文件上传之条件竞争-CSDN博客

upload-labs通关笔记-第19关文件上传之条件竞争-CSDN博客

upload-labs通关笔记-第20关 文件上传之杠点绕过-CSDN博客

upload-labs通关笔记-第21关 文件上传之数组绕过-CSDN博客

目录

一、图片特点

二、源码分析

1、代码审计

2、渗透思路

三、制作简易图片马

1、制作脚本test14.php

2、制作图片马

(1)制作jpg图片马

(2)制作gif图片马

(3)制作png图片马

四、文件包含与图片马

五、渗透实战

1、jpg渗透

(1)上传jpg图片马

(2)获取图片URL地址

(3)打开文件包含网站

(4)利用文件包含

2、png渗透

3、gif渗透


本文通过《upload-labs靶场通关笔记系列》来进行upload-labs靶场的渗透实战,本文讲解upload-labs靶场第14关图片马之文件头绕过渗透实战。

一、图片特点

在upload-labs靶场的1-13关卡,判断是否为图片或者脚本,基本都是通过文件的扩展名是否在黑名单或者白名单中。然而这种方法并不可靠,判断是否是真实的图片还可以根据图片的文件结构来进行验证,比如说jpg、png和gif图片的文件特征如下所示。

  • JPEG:以 FF D8 开头,以 FF D9 结束
  • PNG:以89 50 4E 47 0D 0A 1A 0A开头
  • GIF:以 GIF89a 或 GIF87a 开头,十六进制以47 49 46 38开头​​
    • GIF89a(较新版本,支持动画和透明色)

      • 十六进制:47 49 46 38 39 61

      • ASCII:GIF89a

    • GIF87a(旧版本,基础功能)

      • 十六进制:47 49 46 38 37 61

      • ASCII:GIF87a

二、源码分析

打开靶场14关,查看源码进行源码分析,发现本小节依旧是白名单绕过,不过判断是否为图片的方法不是根据文件名的后缀,而是根据文件内容的前两个字节判断是否上传类型 为图片,具体源码如下图所示。

1、代码审计

这段代码实现了一个文件上传功能,并且通过读取文件的二进制头部信息来判断文件的真实类型,只允许已知类型(JPEG、PNG、GIF)的文件上传,同时对上传过程中的不同情况给出相应的提示信息。详细注释后的源码如下所示。

http://www.xdnf.cn/news/9564.html

相关文章:

  • 时序预测力作PatchMixer论文理解
  • 5.28本日总结
  • [蓝帽杯 2022 初赛]网站取证_2
  • 第十五届蓝桥杯大赛软件赛国赛Python 大学 C 组试做【本期题单: 设置密码、栈】
  • Docker安装 | Spug
  • 【Linux】systemctl 和 sysctl 的区别
  • 常见的文件夹操作(附源码)
  • uni-app开发特殊社交APP
  • 战略3.4 - 研究与开发战略、生产运营战略
  • C++ string 相关的函数
  • 字符串day8
  • 制造业数字化转型之路:再造盈利模式,重塑客户价值
  • 深入理解JavaScript设计模式之call,apply,this
  • 【LangGraph 入门指南】为智能代理打造灵活可控的工作流框架
  • 运维三剑客——sed
  • Redis 的内存回收机制
  • HAWQ 取代传统数仓实践(十八) —— 层次维度
  • DeePNAP:一秒预测蛋白-DNA/蛋白-RNA结合强度
  • 安装nginx
  • Qt使用智能指针
  • 桌面系统核桃派部署自启服务
  • 传感器技术的演进与测试方法探究
  • 数据科学 vs. 大数据:一场“烧脑”但有温度的较量
  • Spring AI 多模型智能协作工作流实现指南
  • AI Agent开发第76课-Dify N8n一类的AI流程“出轨“时会爆发什么样的工程灾难
  • 用python制作一个打地鼠游戏
  • 主要国产数据库及其典型应用场景
  • 每天掌握一个Linux命令 - ps
  • 多因素身份鉴别组合方案及应用场景
  • MySQL----视图的创造和使用