Thinkphp5.1反序列化漏洞复现加代码调式
原文中文,约800字,阅读约需2分钟。
📝
内容提要
本文讲述了代码调试环境中遇到的问题,需要注意composer和phpstrom版本对应,以及环境搭建。作者复现了应用入口反序列化接收,并跟进了removeFiles()和file_exists()等函数。最终进行了一系列传参,进行html输出。
🎯
关键要点
-
代码调试环境中composer和phpstorm版本不匹配的问题。
-
需要修改composer.json文件以确保版本一致。
-
使用phpstudy搭建composer环境,未使用think run。
-
成功搭建环境并访问,需自行查找composer安装方法。
-
在packagist.org查找相应版本下载信息。
-
复现应用入口反序列化接收的过程。
-
使用hackbar进行发包调试。
-
接受反序列化字符并触发析构函数。
-
跟进removeFiles()和file_exists()函数的执行。
-
file_exists()将对象参数处理为字符,触发php的_Tostring()。
-
跟进toJson和toArray方法的执行。
-
在foreach遍历中,visible和hidden为空值,未进入if判断。
-
调用getAtr和getData方法,构造前的值已准备好。
-
最终进行一系列传参,输出html。
🏷️