
[TOC]
什么是PDF/JS Polyglot文件?Polyglot文件指的是一个文件同时满足多种文件格式的解析规则,看似是合规的某类文件(如PDF),实则包含另一类可执行代码(如JS)。PDF/JS Polyglot文件就是利用PDF和JS解析机制的差异,让文件在PDF阅读器中正常显示,却能在浏览器以脚本形式加载时执行恶意JS代码,从而绕开文件上传过滤、触发XSS等攻击。
技术原理制作此类 Polyglot 主要有三种方式:
方法一:头部偏移容错
方法二:字符串/注释包裹法
方法三:多容器嵌套(HTML/PDF Polyglot)
虽然是三种方法,但是在核心原理上是一致的,都是利用的两种格式在解析机制上的差异和容错性造成的,只不过不同的路径被归纳为了不同的方法。
头部偏移容错头部偏移容错是最常见的也是最直接的制造此类 Polyglot 的方式。
原理:一般而言标准的 PDF 解析器(比如 Adobe Acrobat、Chrome PDF Viewer)通常不强制要求 %PDF-1.x 魔法头(Magic Bytes)必须位于文件的第 ...






