首页 > 其他分享 >刷题Phuck2--data协议差异

刷题Phuck2--data协议差异

时间:2024-07-04 23:52:21浏览次数:1  
标签:aa profile get -- Phuck2 file include data

刷题Phuck2

使用arjun扫出hl参数,获取到源码

image-20240704231439-teiap68

源码:

<?php
    stream_wrapper_unregister('php');
    if(isset($_GET['hl'])) highlight_file(__FILE__);

    $mkdir = function($dir) {
        system('mkdir -- '.escapeshellarg($dir));
    };
    $randFolder = bin2hex(random_bytes(16));
    $mkdir('users/'.$randFolder);
    chdir('users/'.$randFolder);

    $userFolder = (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']);
    $userFolder = basename(str_replace(['.','-'],['',''],$userFolder));

    $mkdir($userFolder);
    chdir($userFolder);
    file_put_contents('profile',print_r($_SERVER,true));
    chdir('..');
    $_GET['page']=str_replace('.','',$_GET['page']);
    if(!stripos(file_get_contents($_GET['page']),'<?') && !stripos(file_get_contents($_GET['page']),'php')) {
        include($_GET['page']);
    }

    chdir(__DIR__);
    system('rm -rf users/'.$randFolder);

?>

这里学到的知识:

  1. stream_wrapper_unregister('php');禁用php流(php开头的伪协议)
  2. allow_url_include=Off时,include函数不支持 include data URI 的,也就是说:file_get_contents在处理data:,xxx时会直接取xxx ,而include会包含文件名为data:,xxx****的文件

本题就是在头部进行RCE,头部信息会写进profile文件,我们再利用include包含profile文件

但是需要绕过对profile文件内容的检测

    if(!stripos(file_get_contents($_GET['page']),'<?') && !stripos(file_get_contents($_GET['page']),'php')) {
        include($_GET['page']);

这里的话就是data协议处理差异

当allow_url_include=Off时,include不支持data伪协议。
file_get_contents是读取而include是包含
这两者还是有区别的。所以我们传file_get_contents('data://text/plain,aa/profile')​时会得到aa/profile​字符串
而include因为不包含data伪协议。就会把data://text/plain,aa​当作一个目录,去包含下面的profile文件

但是这里出现一个问题,我们名字里有斜杠,是不合法的,其实直接使用data:,aa或者时data:aa就行
我们可以传值XFF为data:aa
就会创建data:aa​这个文件夹。然后包含data:aa/profile

image-20240704215616-3cgceg3

标签:aa,profile,get,--,Phuck2,file,include,data
From: https://www.cnblogs.com/m1xian/p/18284924

相关文章

  • R语言汽车口碑数据采集抓取、文本数据分词和词云可视化实现
    原文链接:https://tecdat.cn/?p=34469原文出处:拓端数据部落公众号本文以R语言为工具,帮助客户对汽车网站的口碑数据进行抓取,并基于文本数据分词技术进行数据清理和统计。通过词频统计和词云可视化,对口碑中的关键词进行分析,挖掘出消费者对汽车的评价和需求,为汽车制造商和销售商提供......
  • job测试检查点
    定时任务测试分享:job测试方案的介绍:需求澄清明确业务需求:与业务、产品、开发了解需求背景,用户的数量,用户场景等信息。明确测试范围:与产品、开发共同评估,具体对应的场景,具体涉及的接口和表,数据量,被调用关联方链路,了解是否使用Redis和mq等。明确测试目的:评估数量为性能测试提......
  • R语言大学城咖啡店消费问卷调查报告:信度分析、主成分分析可视化
    全文链接:https://tecdat.cn/?p=34656原文出处:拓端数据部落公众号本次调查旨在了解文汇路咖啡店的市场状况,以便为学校周边咖啡店的经营发展提供积极的引导意义。我们通过问卷调查的方式,收集了大量的数据,通过r软件对数据进行了基本情况分析、信度分析、问卷调查数据可视化分析以及......
  • 常见Linux命令
    1、查看目录:ls常用用法:ls-l:以列表的形式展示;简写ll效果展示:2、终端清屏:clear常用用法:ctr+L:清空屏幕当前的内容,不会重置终端效果展示:使用前使用后3、切换目录:cd常用用法:cd/:切换到根目录cd/xx(目录名):切换到根目录下的xx目录cd..:切换到上一级目录c......
  • MySQL弱口令暴力破解
    10-mysql弱口令暴力破解 主机靶机:本地Linux服务器虚拟机+phpstudy攻击主机:本地Kali虚拟机 配置好网络让主机之间相互可以通信 数据库数据库版本:mysql5.5.62 开启远程连接。 1)使用Hydra工具进行暴力破解kali自带的hydra工具是一款非常强大的暴力破解......
  • xctf smarty 利用 LD_PRELOAD 环境变量绕过disable_functions
    进来看页面一眼看出为smarty注入,尝试查看smarty版本再进行下一步操作。可以看到是3.1.30那么就可以利用if标签来进行注入。利用file_put_contents上传木马。接下来蚁剑访问,发现没有权限,想到可能需要绕过disable_functions,而绕过disable_functions就那么几种,尝试利用LD_PRELOAD......
  • MySQL网络安全-防syn攻击防暴力攻击
    防syn泛滥攻击、暴力破解攻击 错误:ERROR1129(00000):Host'xxx'isblockedbecauseofmanyconnectionerrors.Unblockwith'mysqladminflush-hosts' 很多资料说,这个是密码输入错误的尝试次数超过max_connect_errors变量,MySQL就会阻塞这个客户端登录。 官方描述:......
  • 《操作系统》内存管理_内存扩充技术补充
    前言  操作系统王道书里面既然没有这个知识点,但却有一节网课。我不能不记笔记,所以我将这补充一下,写出博客。操作系统内存管理的四大功能  内存空间的分配与回收、地址转换、存储保护、内存空间的扩充内存空间的扩充覆盖技术  早期的计算机内存很小,经常会出现内存大小......
  • Python时间序列模型分析太阳能光伏发电数据:灰色模型GM(1,1)、ARIMA、指数平滑法可视化分
    全文链接:https://tecdat.cn/?p=36660原文出处:拓端数据部落公众号在可再生能源领域中,太阳能光伏发电作为一种清洁、可再生的能源形式,近年来得到了广泛关注与应用。随着技术的进步和成本的降低,光伏发电已成为全球能源结构转型的重要方向之一。然而,光伏发电的发电量受多种因素影响,......
  • 1panel搭建halo+alist+兰空图床
    由于服务器更新过后,ssh连接不上,机商vnc延迟卡的很,输个命令都不行,刚好centos断更了,换ubuntu系统了。也顺便从MySQL转到PostgreSQL。这个算是个记录,给有基础的人看的,你连ssh都不会连,那你得自己一步一步慢慢百度来。其实还是比较无脑的,除了1panel的反代,感觉设计对小白来说不是那么友......