PHP代码审计 01 基础知识

本文记录 PHP 代码审计的学习过程,教程为暗月 2015 版的 PHP 代码审计课程

PHP 代码审计博客目录

1. 环境准备

1.1 测试运行环境

安装 wamp

1.2 PHP 编写工具

  1. EditPlu

  2. Notepad++

  3. Zendstudio 10 百度云下载链接

1.3 代码审计工具

Seay源代码审计系统 百度云下载链接

1.4 代码审计平台

  1. DVWA GitHub 链接
  2. ZVulDrill GitHub 链接

2. 注释

  1. 单行注释 => //单行注释
  2. 多行注释 => /*多行注释*/

3. 单引号和双引号

  1. 单引号不解析变量

  2. 双引号解析变量

     aaa='123'
     echo '$aaa' => 结果为 $aaa
     echo "$aaa" => 结果为 123
    

4. 输出函数

  1. echo 或者 print:最简单的输出方法

  2. print_r、var_dump(var_export)、debug_zval_dump:输出变量数据值,特别是数组和对象数据

  3. var_dump 会额外输出数据类型

  4. print_r:输出格式很整齐,跟var_dump 的区别是没有类型数据,并且布尔值的 false 和 NULL 输出为空

  5. var_export:所有的数据是可以作为组织好的变量输出的,都是能够作为直接赋值使用;需要注意的一点是, var_export 对于资源型的变量会输出NULL

  6. debug_zval_dump:输出结果跟 var_dump 类似,唯一增加的一个值是 refcount,就是记录一个变量被引用了多少次,这是 php 的copy on write (写时复制) 的机制的一个重要特点。

5. 超全局变量

超全局变量——超全局变量是在全部作用域中始终可用的内置变量

1. 简介

  1. 在php 中可由用户操作的全局变量列表如下:

     $GLOBALS — 引用全局作用域中可用的全部变量
     $_SERVER — 服务器和执行环境信息
     $_GET — HTTP GET 变量
     $_POST — HTTP POST 变量
     $_FILES — HTTP 文件上传变量
     $_REQUEST — HTTP Request 变量
     $_SESSION — Session 变量
     $_ENV — 环境变量
     $_COOKIE — HTTP Cookies
    
  2. 已经被弃用的超全局变量

     $_HTTP_COOKIE_VARS
     $_HTTP_ENV_VARS
     $_HTTP_GET_VARS
     $_HTTP_POST_FILES
     $_HTTP_POST_VARS
     $_HTTP_SERVER_VARS
    

2. 超全局变量示例

  1. $GLOBALS

     # 例一:
     
     # 显示结果为1
    
     # 例二
     
     # 显示结果为 21 
     # 函数内部为局部变量,不被 $GLOBALS 所识别
    
  2. $_SERVER

     test1.php
     	
    
     test2.php
     	
    

    输出结果为服务器的配置信息

    PHP代码审计 01 基础知识_第1张图片

    输出结果可以被覆盖

    PHP代码审计 01 基础知识_第2张图片

  3. $_GET

     test.php
     	
    

    输出结果为 URL 中的 GET 变量的数据

    PHP代码审计 01 基础知识_第3张图片

  4. $_POST

     test.php
     	
    

    输出结果为 URL 中的 POET 变量的数据

  5. $_FILES

     1. file.html
     	
    Filename:
    2. test.php

    输出结果为提交的文件的信息

    在这里插入图片描述

  6. $_REQUEST

     test1.php
     	
    
     test2.php
     	
    

    输出结果可以被覆盖

    PHP代码审计 01 基础知识_第4张图片

  7. $_SESSION

     test1.php
     	
    
     test2.php
     	
    

    输出结果可以被覆盖

    PHP代码审计 01 基础知识_第5张图片

  8. $_ENV

     test1.php
     	
    
     test2.php
     	
    
     test3.php
     	
    

    输出结果可以被覆盖

    PHP代码审计 01 基础知识_第6张图片

    PHP代码审计 01 基础知识_第7张图片

  9. $_COOKIE

     test.php
     	
    

    输出结果为 cookie 值

你可能感兴趣的:(代码审计)