WEB
小蓝鲨的冒险
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <?php error_reporting(0); highlight_file(__FILE__); $a = "isctf2024"; $b = $_GET["b"]; @parse_str($b); echo "小蓝鲨开始闯关,你能帮助他拿到flag吗?<br>"; if ($a[0] != 'QNKCDZO' && md5($a[0]) == md5('QNKCDZO')) { $num = $_POST["num"]; echo "第一关有惊无险!小蓝鲨壮着胆子接着继续往下走!<br>"; if($num == 2024){ die("QAQ小蓝鲨误入陷阱,不怕,再接再厉!"); } if(preg_match("/[a-z]/i", $num)){ die("陷阱太多QAQ"); } if(intval($num,0) == 2024){ echo "到这了难道还要放弃吗?<br>"; if (isset($_GET['which'])){ $which = $_GET['which']; echo "小蓝鲨貌似在哪里见过这个陷阱O.o?继续加油,还差最后一步了!"; switch ($which){ case 0: print('QAQ'); case 1: case 2: require_once $which.'.php'; echo $flag; break; default: echo GWF_HTML::error('PHP-0817', 'Hacker NoNoNo!', false); break; } } } }
|
学到个新知识点,PHP-0817
根据官网PHP: switch - Manual的介绍,可以看到:
1 2 3
| Note:
注意 switch/case 作的是松散比较。
|
当一个非数字开头的字符串与数字0进行==比较时,结果总是true.因此可以直接提交flag作为which变量的值,”flag”相当于0,必然会执行require_once命令。