bloodpack

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

记一次web做题笔记:$$

image

点击查看代码
<?php
/*

PolarD&N CTF

*/

highlight_file(__file__);
error_reporting(0); 
include "flag.php";

$a=$_GET['c'];
if(isset($_GET['c'])){
    if(preg_match('/flag|\~| |\`|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\-|\+|\=|\{|\[|\;|\:|\"|\'|\,|\.|\?|\\\\|\/|[0-9]|\<|\>/', $a)){
        die("oh on!!!");}
    
    else{
        eval("var_dump($$a);");}}
正则过滤得有点多啊 这里介绍一下正则函数怎么看

||中间的符号即为过滤的符号(\反斜杠用于转义)

因为无法命令执行,所以考虑超全局变量GLOBALS

$GLOBALS:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组。变量的名字就是数组的键),与所有其他超全局变量不同,$GLOBALS在PHP代码中任何地方总是可用的

说到GOLBALS就不能不说到global,那两者有何不同呢?

global在PHP中的解析是:global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。
注:在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用
$GLOBALS:用于访问所有全局变量(来自全局范围的变量),即可以从PHP脚本中的任何范围访问的变量。

image

flag到手

posted on 2025-04-17 15:10  我靠我血包呢  阅读(7)  评论(0)    收藏  举报