zoukankan      html  css  js  c++  java
  • PHP代码审计学习_day2

    0x01 代码调试及Xdebug的配置使用

    (1)echo:最简单的输出数据调试方法,一般用来输出变量值或者不确定执行到哪个分支。
    (2)print_r、var_dump、debug_zval_dump:主要是输出变量的数据值。debug的输出结果和var_dump类似,唯一增加的一个值是refcount,记录一个变量被引用了多少次。
    (3)debug_print_backtrace:查看输出的调用栈信息。
    (4)exit():停止程序,无法运行后面代码。

    Xdebug的安装:https://www.cnblogs.com/linqingvoe/p/10907672.html

    Xdebug介绍

    Xdebug是一个开源的PHP程序调试工具,可以使用它来调试、跟踪及分析程序运行状态。Xdebug需要结合PHP的编辑工具来打断点、跟踪、调试及分析。

    Xdebug的配置

    指定Xdebug扩展文件的绝对路径
    zend_extension = "C:XXXphpphp-版本号extphp_xdebug.dll"
    启用性能检测分析
    xdebug.profiler_enable = on
    启用代码自动追踪
    xdebug.auto_trace = on
    允许收集传递给函数的参数变量
    xdebug.collect_params = on
    允许收集函数调用的返回值
    xdebug.collect_return = on
    指定堆栈跟踪文件的存放目录
    xdebug.trace_output_dir = "C:XXX mpxdebug"
    指定性能分析文件的存放目录
    xdebug.profiler_output_dir = "C:XXX mpxdebug"
    连接和监听主机和端口的调试客户端
    xdebug.remote_enable = on
    启动调试器协议dbgp
    xdebug.remote_handler = dbgp
    客户端的主机
    xdebug.remote_host = localhost
    客户端的端口
    xdebug.remote_port = 9000
    指定DBGP调试器处理程序
    xdebug.idekey = PHPSTORM
    注:以上的配置均在php.ini中

    0x02 审计中涉及的超全局变量

    全局变量
    在函数外面定义的变量,不能在函数中直接使用,因为它的作用域不会到函数内部。所以在函数内部使用的时候常常看到类似global $a;
    超全局变量
    作用域在所有脚本都有效。所以,在函数可以直接使用。除了$_GET,$_POST,$_COOKIE等之外的超全局变量保存在$GLOBALS数组中。
    global
    作用是定义全局变量,只应用于当前网页(包括include和require的所有文件)而不是整个网站。
    $GLOBALS
    用于在PHP脚本中的任意位置访问全局变量(从函数或方法中均可)
    POST(隐藏传参)
    GET(URL传参)
    $_REQUEST
    能从POST和GET中获取提交的数据,但是速度比较慢。尽量不要使用request。
    $_ENV
    包含服务器端环境变量的数组,可在PHP程序的任何地方直接访问。
    只是被动的接受服务器端的环境变量转换为数组元素。

  • 相关阅读:
    基础字段及选项2(11)
    模型层及ORM介绍(9)
    Luogu [P3367] 模板 并查集
    Luogu [P1958] 上学路线_NOI导刊2009普及(6)
    Luogu [P3951] 小凯的疑惑
    Luogu [P2708] 硬币翻转
    Luogu [P1334] 瑞瑞的木板(手写堆)
    一步步学习如何建立自己的个性博客~~
    Android初学者—listView用法
    SQLite命令—对表插入和修改等操作
  • 原文地址:https://www.cnblogs.com/-an-/p/13347837.html
Copyright © 2011-2022 走看看