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。
➡️