
CVE-2017-9608 analysis
运行方式:./script.sh
GitHub仓库 - https://github.com/LaCinquette/practice-22-23
为了寻找漏洞,我选择了FFmpeg项目。在其中找到了符合要求的提交,具体来说:
创建了一个Dockerfile,其中:
DEBIAN_FRONTEND=nointeractive以避免在安装包和其他命令时与命令行交互为了自动化,我创建了脚本script.sh,它构建镜像并启动容器,然后从容器中取出文件并将其移动到当前目录:
--rm 用于在完成后自动删除容器-v $PWD/out:/workspace/out 用于挂载临时目录,通过该目录将目标文件传递到主机ffmpeg -c:v dnxhd -i poc.mov -y output.ts向程序输入一个特制的.mov文件0x08000d4e - 节起始
movsxd rcx, dword [rbx + 0xc]
在rcx寄存器中获取对pc->buffer的引用
add rcx, rdi
将next加到pc->buffer
add rcx, qword [rbx]
将pc->last_index加到next和pc->buffer
movzx edi, byte [rcx]
计算地址rcx处的字节,但由于pc->buffer最初为null,导致Segmentation fault
通过正确处理异常情况,防止访问未分配的内存区域。当检测到剩余字节数为负数时,跳过循环继续处理文件。