实验室:开发PHP反序列化的自定义小工具链
专家
该实验使用基于序列化的会话机制。通过部署自定义小工具链,您可以利用其不安全的反序列化实现远程代码执行。要解决实验室,请删除莫雷莱.txt.
来自Carlos的主目录的文件。
您可以使用以下凭据登录您自己的帐户:维纳:彼得
暗示
您有时可以通过附加TINDE来读取源代码(〜
)到文件名来检索编辑器生成的备份文件。
解决方案
- 登录您自己的帐户,并注意会话cookie包含序列化PHP对象。请注意,该网站引用该文件beplay体育能用吗
/cgi-bin/libs/customtemplate.php.
。通过使用该请求提交请求获取源代码.php〜
备份文件扩展名。
- 在源代码中,请注意
__醒来()
魔法方法CustomTemplate.
将创造一个新的产品
通过参考default_desc_type.
和去世
来自CustomTemplate.
。
- 还注意到了
defaultmap.
班有这堂课__得到()
魔法方法,如果您尝试读取此对象不存在的属性,将调用。这个魔法方法调用call_user_func()
,这将执行任何函数通过defaultmap->回调
属性。该功能将执行$名称
,这是请求的不存在属性。
您可以利用此小工具链来调用Exec(RM / Home/carlos/morale.txt)
通过进入CustomTemplate.
对象:
customtemplate-> default_desc_type =“rm / home/carlos/morale.txt”;customtemplate-> desc = defaultmap;defaultmap-> callback =“exec”
如果您遵循源代码中的数据流,您会注意到这会导致产品
构造函数尝试获取default_desc_type.
来自defaultmap.
目的。因为它没有这个属性,所以__得到()
方法将调用回调exec()
对策default_desc_type.
,它设置为我们的shell命令。
要解决实验室,Base64和URL-编码以下序列化对象,并通过您的会话cookie将其传递到网站上:beplay体育能用吗
o:14:“customtemplate”:2:{s:17:“default_desc_type”; s:26:“rm / home/carlos/morale.txt"; s::::";;:1:{S:8:“回调”; S:4:“Exec”;}}