bugku 变量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);");
    }
    ?>

分析代码

  1. flag in the variable: flag在变量中

  2. error_reporting(0): 设置 PHP 的报错级别并返回当前级别 (0):关闭错误报告

  3. include “flag1.php”: include 语句包含并运行指定文件

  4. highlight_file(file): highlight_file() 函数对文件进行语法高亮显示

  5. $_GET: 变量用于收集来自 method=”get” 的表单中的值,直观的的就是浏览器中可以看到的参数

  6. isset: 检测变量是否设置,并且不是 NULL

  7. preg_match : 函数用于执行一个正则表达式匹配。

  8. “/^\w+$/” : 正则表达式
    ^ 表示开头,是转义字符,使用时在前面加""
    $ 表示结束,是转义字符,使用时在前面加""
    \w 任意一个字母或数字或下划线,也就是 AZ,az,0~9,_ 中任意一个
    这段正则表达式的意思就是字符全部由【AZ,az,0~9,_ 】组成,肯定不能为空
    正则表达式

  9. die() 函数输出一条消息,并退出当前脚本

  10. eval() 函数把字符串按照 PHP 代码来计算。

  11. var_dump() 函数用于输出变量的相关信息

重点

var_dump($$args);中是两个$符号:PHP中变量可以当作另一个变量的变量名

php中有两个美元符号$$的变量——可变变量

我们只需要传入php中的全局变量即可: $GLOBALS:一个包含了全部变量的全局组合数组

即:
构造参数

http://123.206.87.240:8004/index1.php?args=GLOBALS
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值