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.mfbz.cn/a/393117.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Airtest-Selenium实操小课:爬取新榜数据

1. 前言 最近看到群里很多小伙伴都在用Airtest-Selenium做一些web自动化的尝试&#xff0c;正好趁此机会&#xff0c;我们也出几个关于web自动化的实操小课&#xff0c;仅供大家参考~ 今天跟大家分享的是一个非常简单的爬取网页信息的小练习&#xff0c;在百度找到新榜网页&a…

前端工程化面试题 | 09.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

从零开始学习数据结构—【链表】—【探索环形链的设计之美】

环形链表 文章目录 环形链表1.结构图2.具体实现2.1.环形链表结构2.2.头部添加数据2.2.1.具体实现2.2.2.测试添加数据 2.3.尾部添加数据2.3.1.具体实现2.3.2.添加测试数据 2.4.删除头部数据2.4.1.具体实现2.4.2.测试删除数据 2.5.删除尾部数据2.5.1.具体实现2.5.2.测试删除数据 …

PFA洗气瓶配空气采样泵用PFA气体吸收瓶的特点

PFA洗气瓶是一种洗去气体中杂质的器皿&#xff0c;是将不纯气体通过选定的适宜液体介质鼓泡吸收&#xff08;溶解或由于发生化学反应&#xff09;&#xff0c;从而洗去杂质气体&#xff0c;以达净化气体的目的。在设计时&#xff0c;四氟球的周围都布满小孔。一般情况下&#x…

【教学类-19-10】20240214《ABAB式-规律黏贴18格-手工纸15*15CM-一页3种图案,AB一组样板,纵向、有边框》(中班)

背景需求 利用15*15CM手工纸制作AB色块手环&#xff08;手工纸自带色彩&#xff09;&#xff0c;一页3个图案&#xff0c;2条为一组&#xff0c;画图案&#xff0c;黏贴成一个手环。 素材准备 代码展示 # # 作者&#xff1a;阿夏 # 时间&#xff1a;2024年2月14日 # 名称&…

LeetCode刷题计划---day2

07 #include <iostream> #include <iomanip> // 头文件用于控制输出格式 using namespace std;int main() {const int n 5; // 等级个数double grade[n] {4.0, 3.0, 2.0, 1.0, 0.0}; // 每个等级对应的分数string input;while (getline(cin, input)) { // 读入一…

我国纯自研水陆两栖大飞机,鲲龙AG600M完成高寒试飞任务

据航空工业官微介绍&#xff0c;近期我国自主研制的大型水陆两栖飞机“鲲龙”AG600M在海拉尔完成最后一项高寒试飞任务。 其动力装置系统、燃油系统、液压系统、飞控系统、航电系统、起落架系统等关键系统通过了高寒地面试验和试飞验证&#xff0c;可满足我国全疆域范围内的森…

如何将阿里云服务器迁移

&#x1f4d1;前言 本文主要是如何将阿里云服务器迁移实现数据转移的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️** &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日…

【hcie-cloud】【30】华为云Stack应用安全于防护

文章目录 前言Web技术基础和常见Web漏洞Web技术Web系统组成URL结构Web后端技术HTTP/HTTPS协议Cookie/Session简介OWASP TOP 10OWASP TOP 10 2021年版访问控制失效 - 越权访问控制失效 - 跨站请求伪造&#xff08;CSRF&#xff09;URL不安全跳转应用安全法律法规及行业规范 Web应…

React 更改程序入口点(index.js文件位置变更)

食用前提示&#xff1a;本文基于已经快速配置好的React环境而作&#xff0c;配置React环境详见拙作&#xff1a;React环境配置-CSDN博客~ 一、了解默认入口点 使用create-react-app快速搭建react环境后&#xff0c;npm start启动程序的默认入口点为/src/index(即src目录下的ind…

【JavaEE】_HTTP请求首行

目录 1. URL 2. 方法 2.1 GET方法 2.2 POST方法 2.3 GET与POST的区别 2.4 低频使用方法 1. URL 在mysql JDBC中已经提到过URL的相关概念&#xff1a; 如需查看有关JDBC更多内容&#xff0c;原文链接如下&#xff1a; 【MySQL】_JDBC编程-CSDN博客 URL用于描述某个资源…

揭秘京东商品背后的秘密:一键获取详细数据,打造全新购物体验

京东商品详情原数据API接口技术详解 一、概述 京东商品详情原数据API接口是京东开放平台提供的一套用于获取商品详细信息的接口。通过调用该接口&#xff0c;第三方开发者可以获取包括商品描述、价格、图片、评价等详细信息&#xff0c;进而在自己的应用或网站中展示给用户&a…

听说解锁字节扣子,能轻松搭建你的私人AI助手!

一、引子 几年前低代码平台推出了&#xff0c;这种概念应该是未来的一种趋势&#xff0c;不过一直没有被大面积推广起来&#xff0c;或许技术方面还不算成熟。不过随着科技的发展&#xff0c;区块链技术、元宇宙技术、AI技术这些对我们来说触不可及的技术也已经走进大家的视线…

自定义类型详解 ----结构体,位段,枚举,联合

目录 结构体 1.不完全声明 2.结构体的自引用 3.定义与初始化 4.结构体内存对齐与结构体类型的大小 结构体嵌套问题 位段 1.什么是位段&#xff1f; 2.位段的内存分配 枚举 1.枚举类型的定义 2.枚举的优点 联合&#xff08;共同体&#xff09; 1.联合体类型的声明以…

PyCharm 自动添加文件头注释

PyCharm 自动添加文件头注释 1. File and Code Templates2. Python FileReferences 1. File and Code Templates File -> Settings -> Editor -> File and Code Templates -> Python Script Reformat according to style & Enable Live Templates Created by…

UE4 C++联网RPC教程笔记(一)(第1~4集)

UE4 C联网RPC教程笔记&#xff08;一&#xff09;&#xff08;第1~4集&#xff09; 前言1. 教程介绍与资源2. 自定义 Debug 功能3. Actor 的复制4. 联网状态判断 前言 本系列笔记将会对梁迪老师的《UE4C联网RPC框架开发吃鸡》教程进行个人的知识点梳理与总结&#xff0c;此课程…

第三十五回 梁山泊吴用举戴宗 揭阳岭宋江逢李俊-python中用Shell通配符匹配字符串

宋江被抓住&#xff0c;判脊杖二十&#xff0c;刺配江州牢城。临走时宋太公专门叮嘱他不要入伙梁山。 宋江和差人专门挑小路走&#xff0c;想避开梁山&#xff0c;结果还是被赤发鬼刘唐守到了。大家把宋江请上山&#xff0c;都参拜了宋江。看宋江执意要走&#xff0c;吴用说自…

Python学习路线图

防止忘记&#xff0c;温故知新 进阶路线

思迈特再获国家权威认证:代码自主率98.78%

日前&#xff0c;思迈特软件自主研发的商业智能与数据分析软件&#xff08;Smartbi Insight&#xff09;通过中国赛宝实验室&#xff08;工业和信息化部电子第五研究所&#xff09;代码扫描测试&#xff0c;Smartbi Insight V11版本扫描测得代码自主率为98.78%的好成绩&#xf…

Json格式文件

1.把Java对象转换成Json格式 1.1.导入依赖 这里推荐一个插件Jackson&#xff0c;其提供的类可以让Java的类转换成Jason格式文件 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><vers…
最新文章