前言

最近研究了一下 phar 的解析流程,想知道什么样子的文件能触发 phar 反序列化,最后发现 phar 验证文件签名是从后往前取的,所以得要能控制文件末尾才行(或者关闭 phar 的签名配置),温习了一下 gdb 调试 php 的方法,顺手记录一下。


  1. 在 php.net 上面下载源码包(当然 GitHub 也可以)。

  2. ./configure && make (缺什么装什么,不用 make install)。

  3. gdb ./sapi/cli/php:

  4. b ext/phar/phar.c:2333 下断点

  5. r 要调试的 php 开始调试:


2020/05/11

下载源码后,加上 prefix 然后 configure(好像不加 debug 也可以,调试时没有符号表的话就加上),make,make install,最后用 gdb 调试 bin 目录下的 php。

如果调试过程中变量和流程不太对劲,可以在 configure 那一步加上 -O0。

./configure --prefix /home/aluvion/桌面/php7.4.2 CFLAGS="-g3 -O0 -gdwarf-4"

Orz


Web PHP

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

Vue学习笔记(1)
code-break2018-picklecode+Django远程调试