项目的搭建、fuzz、调试
首先尽量使用ubuntu20来进行fuzz,用ubuntu18产出的pdf与ubuntu20的不一样,十分影响调试过程
流程
1 | mkdir fuzzing_xpdf |
使用程序运行生成的crashes文件,如图
完全不同与使用ubuntu18的crash
当程序中出现crashes后,使用gdb调试
命令
1 | gdb --args $HOME/fuzzing_xpdf/install/bin/pdftotext $HOME/fuzzing_xpdf/out/default/crashes/id:000000,sig:11,src:000000+000123,time:429855,execs:42820,op:splice,rep:4 |
栈回溯如图
显而易见发生了无限递归
发生的地方为Parser::getObj
此时重新构建项目方便调试
1 | sudo rm -r $HOME/fuzzing_xpdf/install |
调试过程
1 | bt #查看栈回溯 |
运行处1
运行处2(主要是在这里发生了递归)