BUGKU-WEB 变量1

题目描述

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

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

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.mzph.cn/news/689045.shtml

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

相关文章

数据库概述、部署MySQL服务、必备命令 、密码管理、安装图形软件、SELECT语法 、筛选条件

目录 1 案例1&#xff1a;构建MySQL服务器 1.1 问题 1.2 方案 1.3 步骤 2 案例2&#xff1a;密码管理 2.1 问题 2.2 步骤 3 案例3&#xff1a;安装图形软件 3.1 问题 3.2 方案 3.3 步骤 4 案例4&#xff1a;筛选条件 4.1 问题 4.2 方案 4.3 步骤 1 案例1&#x…

AcWing 1050 鸣人的影分身(复杂DP ——整数划分问题)

[题目概述] 在火影忍者的世界里&#xff0c;令敌人捉摸不透是非常关键的。 我们的主角漩涡鸣人所拥有的一个招数——多重影分身之术——就是一个很好的例子。 影分身是由鸣人身体的查克拉能量制造的&#xff0c;使用的查克拉越多&#xff0c;制造出的影分身越强。 针对不同的作…

【Linux】进程的初步认识(二)

进程的初步认识 前言查看进程通过系统调用创建进程关于创建进程的几点补充 前言 之前的一篇文章(文章链接)已经初步对于进程有了一个认识&#xff0c;这篇文章主要是介绍如何去查看进程的相关信息以及创建一个进程的相关知识 查看进程 查看进程的信息可以在/proc系统文件夹中查…

代码随想录刷题笔记-Day19

1. 二叉搜索树的最小绝对差 530. 二叉搜索树的最小绝对差https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝…

ZigBee学习——基于AF的数据通信

文章目录 一、简单描述符1.1 简单介绍1.2 简单描述结构体介绍1.3 结构体中的簇1.4 应用场景 二、AF通信原理2.1 通信过程2.2 端点号分类2.3 通信方式2.4 注册简单描述符 三、数据发送API简介3.1 AF层数据发送API3.2 基于AF层封装的通信API3.2.1 点对点通信API3.2.2 广播通信API…

数据库管理-第151期 Oracle Vector DB AI-03(20240218)

数据库管理151期 2024-02-18 数据库管理-第151期 Oracle Vector DB & AI-03&#xff08;20240218&#xff09;1 向量数据库应用场景2 Oracle Vector DB3 Vector数据类型4 Vector运算5 Vector DML插入向量获取向量 总结 数据库管理-第151期 Oracle Vector DB & AI-03&am…

LeetCode 热题 100 Day01

哈希模块 哈希结构&#xff1a; 哈希结构&#xff0c;即hash table&#xff0c;哈希表|散列表结构。 图摘自《代码随想录》 哈希表本质上表示的元素和索引的一种映射关系。 若查找某个数组中第n个元素&#xff0c;有两种方法&#xff1a; 1.从头遍历&#xff0c;复杂度&#xf…

【Spring】三级缓存

目录标题 触发所有未加载的实例a - 开始getBean&#xff08; doGetBean&#xff09; - 获取单例beangetSingleton() - 获取单例beancreateBean&#xff08;doCreateBean&#xff09; - 创建beancreateBeanInstance - 创建并返回beanaddSingletonFactory -放三级缓存populateBea…

序列发生器

一开始想直接FSM&#xff0c;划分出6状态依次输出对应的。但其实只要6比特的移位寄存器&#xff0c;每次输出高位。复位后的默认值时6’b001_011。这样就可以实现循环&#xff0c;这种移位寄存器也叫barrel_shifter。循环移位。也可以使用循环计数器&#xff0c;然后case计数器…

<爬虫Error篇>:乱码问题

前言: 当涉及到网页编码问题时&#xff0c;经常会遇到不同页面使用不同编码方式的情况。这可能导致在解析页面时出现乱码&#xff0c;使我们无法正确获取页面内容 正文: 网页的编码问题: 在处理网页编码问题之前&#xff0c;我们需要了解一些基础知识。网页中的编码方式通常…

JRT监听-PDF-Excel-Img

依赖全新设计&#xff0c;我们无需再顾虑历史兼容性的束缚&#xff1b;同时&#xff0c;基于多年来累积的深入需求理解&#xff0c;JRT监听机制巧妙地借助CMD命令模式&#xff0c;达成了监听的全面统一。无论是PDF、Excel还是图片文件&#xff0c;都不再需要特殊对待或额外区分…

MT8781核心板_MTK8781安卓核心板规格参数

MT8781安卓核心板以其强大的性能和高效的能耐备受瞩目。其八核CPU架构包括(2x Cortex-A76 2.2GHz 6x Cortex-A55 2.0GHz)&#xff0c;以及高性能的Arm Mali G57级GPU。同时&#xff0c;配备高达2,133MHz的LPDDR4X内存和快速的UFS 2.2级存储&#xff0c;大大加速了数据访问速…

java面试集合篇

上面是java中集合的整体框架图。 集合使用的数据结构 算法复杂度分析 时间复杂度分析 时间复杂度分析&#xff1a;来评估代码的执行耗时的 /*** 求1~n的累加和* param n* return*/ public int sum(int n) {int sum 0;for ( int i 1; i < n; i) {sum sum i;}return …

ubuntu22.04-磁盘管理-虚拟机动态扩容-系统monitor

文章目录 1.虚拟机2.ubuntu设置3.命令查看4.系统资源管理器 1.虚拟机 关闭ubuntu22.04&#xff0c;然后修改虚拟机设置&#xff0c;如下图所示&#xff1a; 修改容量 2.ubuntu设置 搜索打开disks&#xff0c;如下图所示&#xff1a; 选择目标磁盘&#xff0c;选择调整大小…

Filterajax

1.Filter概念 概念:表示过滤器,是JavaWeb三大组件(Servlet,Filter,Listener)之一;过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能.过滤器可以完成一些通用操作比如:登录添加购物车,视频广告,敏感字符处理等等... 2.Filter快速入门 3.Listener 4.Ajax学习 1.使用场…

Android 15 第一个开发者预览版

点击查看&#xff1a;first-developer-preview-android15 点击查看&#xff1a;Get Android 15 2024年2月16日,谷歌发布 Android 15 第一个开发者预览版 翻译 由工程副总裁戴夫伯克发布 今天&#xff0c;我们发布了Android 15的首个开发者预览版&#xff0c;这样我们的开发者就…

腾讯云OSS文件上传功能

腾讯云COS介绍 腾讯云COS&#xff08;Cloud Object Storage&#xff09;是一种基于对象的存储服务&#xff0c;用于存储和管理海量的非结构化数据&#xff0c;如图片、音视频文件、备份数据等。它具有以下特点和优势&#xff1a; 高可靠性&#xff1a;采用分布式存储架构&…

MySQL学习记录——십이 事务

文章目录 1、了解事务2、事务提交3、事务隔离级别1、隔离性和隔离级别2、查看、设置隔离级别3、读未提交4、读提交5、可重复读6、串行化7、总结 4、事务一致性5、事务隔离性1、隐藏字段2、undo日志3、模拟MVCC4、Read View 6、读提交RC、可重复读RR的区别 1、了解事务 MySQL内…

强化学习(TD3)

TD3——Twin Delayed Deep Deterministic policy gradient 双延迟深度确定性策略梯度 TD3是DDPG的一个优化版本&#xff0c;旨在解决DDPG算法的高估问题 优化点&#xff1a; ①双重收集&#xff1a;采取两套critic收集&#xff0c;计算两者中较小的值&#xff0c;从而克制收…

第一个 Angular 项目 - 动态页面

第一个 Angular 项目 - 动态页面 使用的所有技巧都在下面的笔记里&#xff1a; [Angular 基础] - 数据绑定(databinding) [Angular 基础] - 指令(directives) 以上为静态页面&#xff0c;即不涉及到跨组件交流的内容 以下涉及到组件内的沟通&#xff0c;从这开始数据就“活”…