BUGKU-WEB 变量1

news2025/3/9 23:02:20

题目描述

题目截图如下:
在这里插入图片描述

进入场景看看:
在这里插入图片描述

flag In the variable !
 <?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);");
}
?>

解题思路

  • 代码第一行就提示说:flag在变量中,那不就是要读取变量的值?
  • PHP代码解读

相关工具

解题步骤

假装PHP代码审计一下:

  1. error_reporting(0); 这行代码设置错误报告级别为0,也就是禁用错误报告。

  2. include “flag1.php”; 这行代码用于包含一个名为"flag1.php"的文件。

  3. highlight_file(_file_); 这行代码用于将当前文件的源代码进行语法高亮并输出到浏览器。

  4. die(“args error!”); 这行代码输出错误信息"args error!"并终止程序的执行。

  5. if(isset($_GET[‘args’])){} 这个条件判断语句检查是否存在名为"args"的GET参数。如果存在,则执行后面的代码块。

  6. $args = $_GET[‘args’]; 这行代码将GET参数"args"的值赋给变量$args。

所以需要一个args参数来接收

/?args=

值是多少?看看preg_match解释.

  1. eval(“var_dump( $ $ args);”); 这行代码使用eval()函数将变量$args的值作为PHP代码执行,也就是通过var_dump()函数将$ args变量的值输出。
  • eval()函数,允许执行任意 PHP 代码

  • $$args表示以$args变量的值为变量名的变量(也就是$args的值应该是另一个变量的变量名)。,比如:

$change_name = "trans"
$trans = "you"
echo $change_name
echo "<br>"
echo $$change_name

输出:

trans
you

简单说就是:这段代码的功能是接受一个名为"args"的GET参数,将其作为变量名来进行求值,并将结果通过var_dump()函数输出到浏览器。

  1. if(!preg_match("/^\w+ / " , /", /",args)){ } :这个条件判断语句使用正则表达式检查$args变量的值是否符合\w+这个模式,也就是是否只包含字母、数字和下划线。如果不符合,则执行后面的代码块。

/^\w+$/中,

  • 两个/ / 表明正则表达式的开始与结束,
  • ^是开始字符,
  • $是结束字符,
  • \w 包含【a-z, A-Z, ,0-9】中的字符,
  • +代表可以有一个或多个。

总的加起来意思就是 以[a-z,A-Z,,0-9]中的其中一个字符开始,中间可以有任意个[a-z, A-Z, ,0-9]字符,最后再以[a-z,A-Z,,0-9]中的一个字符结束 这是对args传入的参数的要求。题目这里就相当于以所有字母数字模式,匹配args变量。也就是说我们赋值的args变量的值(可能包含字母和数字)要出现在PHP文件中(我想不到是去找PHP文件中的变量)。这怎么做到???

这时候就出现了全局变量、超全局变量!这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

总不可能定义一个特别的变量,那么就可以将php九大超级全局变量一个一个试:

$_POST [用于接收post提交的数据]
$_GET [用于获取url地址栏的参数数据]
$_FILES [用于文件就收的处理img (最常见)]
$_COOKIE [用于获取与setCookie()中的name 值]
$_SESSION [用于存储session的值或获取session中的值]
$_REQUEST [具有get,post的功能,但比较慢]
SERVER[是预定义服务器变量的一种,所有SERVER[是预定义服务器变量的一种,所有_SERVER [是预定义服务器变量的一种,所有_SERVER开头的都
$GLOBALS [一个包含了全部变量的全局组合数组]`变量的名字就是数组的键`[不出意外就是你啦]
$_ENV [ 是一个包含服务器端环境变量的数组。它是PHP中一个超级全局变量,我们可以在PHP 程序的任何地方直接访问它]

先试试_REQUEST:
在这里插入图片描述
确实有反应,但是没有flag,再试试其他的,直到GLOBALS($GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。):

http://114.67.175.224:13462/?args=GLOBALS

在这里插入图片描述

得到Flag

flag{6df491b3ca68fc5d2afef2dfd0aea228}

在这里插入图片描述

新知识点

  • preg_match函数

  • var_dump()函数

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

输出:

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}

  • isset 函数
  • PHP 超级全局变量
    在这里插入图片描述

本题重点是学习一下关于PHP的超级全局变量相关知识!

有用的话,请点赞收藏评论,帮助更多的同学哦

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习系列53:大模型微调概述

参考系列文章&#xff1a;https://zhuanlan.zhihu.com/p/635152813 github链接&#xff1a;https://github.com/liguodongiot/llm-action 1 训练范式 下面这种instructive learning&#xff0c;在模型参数达到80亿后&#xff0c;会发生质的提升&#xff1a; 类似的还有手写pr…

error: ‘QWidget‘ file not found

说明你没有加载 widgets模块 缺少widgets&#xff0c;就报错

【Java EE初阶十二】网络原理(二)

2. 传输层 2.2 TCP协议 2.2.2 关于可靠传输 4.滑动窗口 前面的三个机制&#xff0c;都是在保证 tcp 的可靠性&#xff1b; TCP 的可靠传输,是会影响传输的效率的.(多出了一些等待 ack 的时间,单位时间内能传输的数据就少了)&#xff1b; 滑动窗口,就让可靠传输对性能的影响,更…

CSS 圆形的时钟秒针状的手柄绕中心点旋转的效果

<template><!-- 创建一个装载自定义加载动画的容器 --><view class="cloader"><!-- 定义加载动画主体部分 --><view class="clface"><!-- 定义类似秒针形状的小圆盘 --><view class="clsface"><!-…

从概念到现实:数字孪生在智慧园区建设中的实现路径

目录 一、引言 二、数字孪生与智慧园区的关联 三、数字孪生技术的核心要素及实现路径 1、数据采集与处理 2、建立数字孪生模型 3、实时更新与优化 4、实现与智慧园区的集成 四、数字孪生技术在智慧园区中的应用场景 1、能源管理 2、安全监控 3、设施管理 五、面临的…

解读OpenAI视频生成模型Sora背后的原理:Diffusion Transformer

Diffusion Models视频生成-博客汇总 前言&#xff1a;OpenAI最近推出的视频生成模型Sora在效果上实现了真正的遥遥领先&#xff0c;很多博主都介绍过Sora&#xff0c;但是深入解读背后原理的博客却非常少。Sora的原理最主要的是核心模型主干《Scalable Diffusion Models with T…

119. Pascal‘s Triangle II(杨辉三角 II)

问题描述 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 问题分析 其实这个问题与118.杨辉三角解决思路一样&#xff0c;只不过此问题只返回杨辉三角的某一行而已。 代码 i…

BUGKU-WEB eval

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; <?phpinclude "flag.php";$a $_REQUEST[hello];eval( "var_dump($a);");show_source(__FILE__); ?>解题思路 PHP代码审计咯 相关工具 百度搜索PHP相关知识 解题步骤 分析脚…

JDK-JVM-hotspot

JVM JDKJDK内部体系结构&#xff1a;JVM 与 跨平台JVM在程序运行过程中的运行细节&#xff0c;内存分配 和 流转模型。JVM结构体系1. 虚拟机栈2. 线程栈2.1. 栈帧2.2. 数据结构栈 与 线程栈 的关系&#xff1a;2.3.栈帧的内部结构&#xff1a;2.4 方法中的数据 在栈帧中的流转过…

《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)

文章目录 7.1 使用 Go Modules 管理依赖 - 掌舵向未来7.1.1 基础知识讲解7.1.2 重点案例&#xff1a;Web 服务功能描述实现步骤扩展功能 7.1.3 拓展案例 1&#xff1a;使用数据库功能描述实现步骤扩展功能 7.1.4 拓展案例 2&#xff1a;集成 Redis 缓存功能描述实现步骤扩展功能…

代码随想录刷题笔记 DAY 28 | 复原 IP 地址 No.93 | 子集 No.78 | 子集 II No.90

文章目录 Day 2801. 复原 IP 地址&#xff08;No. 93&#xff09;1.1 题目1.2 笔记1.3 代码 02. 子集&#xff08;No. 78&#xff09;2.1 题目2.2 笔记2.3 代码 03. 子集 II&#xff08;No. 90&#xff09;3.1 题目3.2 笔记3.3 代码 Day 28 01. 复原 IP 地址&#xff08;No. 9…

SAP BC Partner XXXX:3299 not reached

带SAProuter 出现如下问题 不带SAProuer 正常登录 原因&#xff1a;SAProuter 服务未开启。 开启过程如下&#xff1a; 进入对应的SAProuter 目录 一般是SAProuter 服务器上 cmd进入目录 执行 saprouter.exe -r -V 2 -G saprouter.og -K "p:CNsap-router, OU0000725…

手把手一起开发SV4E-I3C设备(二)

JEDEC DDR5 SPD Hub Devices例程 DDR5生态系统的核心是SidebandBus Protocol 参考下图&#xff0c;可以将SV4E-I3C的端口1声明为主服务器(模拟主机控制器)&#xff0c;并且它可以属于SV4E-I3C上的一个总线。端口2可以作为SPD Hub DUT的Local Bus侧的从站连接。这个从站可以被…

JWT和base64

1.1 jwt和token 1.1.1 token介绍 令牌&#xff08;Token&#xff09;&#xff1a;在计算机领域&#xff0c;令牌是一种代表某种访问权限或身份认证信息的令牌。它可以是一串随机生成的字符或数字&#xff0c;用于验证用户的身份或授权用户对特定资源的访问。 简单理解 : 每个…

【解决(几乎)任何机器学习问题】:处理分类变量篇(上篇)

这篇文章相当长&#xff0c;您可以添加至收藏夹&#xff0c;以便在后续有空时候悠闲地阅读。 本章因太长所以分为上下篇来上传&#xff0c;请敬请期待 很多⼈在处理分类变量时都会遇到很多困难&#xff0c;因此这值得⽤整整⼀章的篇幅来讨论。在本章中&#xff0c;我将 讲述不同…

H5028B 车灯舞台灯 PWM调光 可温控 48V 60V 72V 80V 100V降压芯片

带温控功能的降压恒流芯片的工作原理如下&#xff1a; 降压功能&#xff1a;首先&#xff0c;芯片会监测输入电压&#xff0c;并通过内部的电路将输入电压降低到所需的输出电压水平。这可以通过开关电源转换技术实现&#xff0c;例如脉冲宽度调制&#xff08;PWM&#xff09;或…

2024年【熔化焊接与热切割】考试题库及熔化焊接与热切割考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 熔化焊接与热切割考试题库考前必练&#xff01;安全生产模拟考试一点通每个月更新熔化焊接与热切割考试报名题目及答案&#xff01;多做几遍&#xff0c;其实通过熔化焊接与热切割模拟考试题库很简单。 1、【单选题】…

硬错误-STM32

需要修改栈大小 还得是野火的文档比较讲得深一点。

图解linux零拷贝技术

转发自&#xff1a;https://zhuanlan.zhihu.com/p/442771856 1、数据拷贝基础过程 在Linux系统内部缓存和内存容量都是有限的&#xff0c;更多的数据都是存储在磁盘中。对于Web服务器来说&#xff0c;经常需要从磁盘中读取数据到内存&#xff0c;然后再通过网卡传输给用户&am…

第13章 网络 Page741~744 asio核心类 ip::tcp::socket

1. ip::tcp::socket liburl库使用"curl*" 代表socket 句柄 asio库使用ip::tcp::socket类代表TCP协议下的socket对象。 将“句柄”换成“对象”,因为asio库是不打折扣的C库 ip::tcp::socket提供一下常用异步操作都以async开头 表13-3 tcp::socket提供的异步操作 …