强网杯2020 Final的RealWorld题,ADoBe复现
膜一下ha1vk师傅,参考ha1vk师傅发在安全客上的文章复现成功的:https://www.anquanke.com/post/id/222391
我是先看的这篇文章:深入分析Adobe忽略了6年的PDF漏洞 https://xlab.tencent.com/cn/2019/09/12/deep-analysis-of-cve-2019-8014/ ,来理解的
上面两篇文章里讲的都很详细了,主要记录下踩坑的地方
踩坑
启动程序
先下载和附件中程序版本一样的Acrobat Reader DC
,一开始我本地没有启动成功,但是右键程序的详细信息里能看见版本号,是20.12.20041
,所以就去下载相对应的版本,下载地址:ftp://ftp.adobe.com/pub/adobe/reader/win/AcrobatDC/1901220034/
,下载en_US的,下载完成后一键安装就好,安装目录会在C:\Program Files (x86)\Adobe
下(这时候好像就能成功打开程序的附件了),这时候在根据题目提示修改注册表键值,即HKLM\SOFTWARE\Wow6432Node\Policies\Adobe\Acrobat Reader\DC\FeatureLockDown
中修改键值项bProtectedMode
(DWORD类型),赋值为0来关闭Adobe Reader DC程序的沙箱,关闭这个沙箱之后,成功启动了题目的附件,比较程序哪里进行了改动的话,用Beyond Compare
比较两个文件夹(自己下载的和题目给的)就行
堆喷射一直失败
我按照ha1vk师傅文章中的方法布置堆布局进行堆喷射,结果一直不成功,然后自己也尝试了很久,死活不成功,最后发现是我是用windbg直接起的AcroRd32.exe
,这样导致了堆喷射的失败,最后用的办法是先启动AcroRd32.exe
,然后用windbg附加上去,这样就成功了,使得程序在处理bmp位图文件的时候申请的堆块落入hole中,然后就能利用程序的漏洞向上溢出修改Array
的大小实现任意读写
exp
最后函数的偏移啥的要根据自己机子的情况调整下
template.pdf:
1 | %PDF-1.7 |
gen_bmp.py:
脚本里的WIDTH为0x278对应堆喷射里的0x130大小,因为COMPRESSION = RLE4
,故WIDTH*4/8 == 0x13c
,程序申请的堆块大小好像是0x140
1 | #-*- coding:utf-8 -*- |
gen_pdf.py:
1 | #!/usr/bin/env python |
参考链接
深入分析Adobe忽略了6年的PDF漏洞 https://xlab.tencent.com/cn/2019/09/12/deep-analysis-of-cve-2019-8014/
强网杯2020决赛RealWord题ADoBe(ADB)https://www.anquanke.com/post/id/222391