if(isset($txt) && ($txt === "welcome to the nefu-nsi")){ echo"hello friend!<br>"; if(preg_match("/flag/",$file)){ echo"It's not time to get flag"; exit(); }else{ echo file_get_contents($file); $password = unserialize($password); echo $password; } }else{ echo"you are not the number of nsi ! "; } ?>
很显然第一步?txt=welcome to the nefu-nsi接着进入else环节,显然file不让你直接读取flag.php 这个时候就需要用到文件包含以及php伪协议的知识了 txt=welcome to the nefu-nsi&file=php://filter/read=convert.base64-encode/resource=hint.php,base64解密得到源码以及读取index.php得到源码,构造pop链 echo password的时候回触发__toString函数,所以只要将__toString()函数中的file设置成为flag.php就能够读取出flag了