预定义超全局数组变量
文章目录
预定义:php已经存在的变量无需定义自接使用
超全局:超级全局变量,作用域是超全局,可以在脚本的任何地方访问和使用,包括函数内部、外部。
预定义超全局数组变量跟php版本是有关联的
三大传参方式
- GET
- 在url中传参
- POST
- 抓包软件
- HackBar插件
- Cookie
- 抓包软件
- 浏览器控制台
$_GET
能够接收get方法的数组
var_dump($_GET);
调用$_GET
函数在url进行GET传参传入的数据就会存储到$_
get数组中
$_POST
能够接收POST方法的数组
var_dump($_POST);
同理定义$_POST
函数后发生提交事件后所传入的函数都会存储于$__POST 数组中
可以在抓包软件中修改请求但是在抓包请求中修改需要在请求头里加入内容类型
Content-Type: application/x-www-form-urlencoded
$GLOBALS
包含当前脚本内所有的超全局变量的应用
所有定义的变量都在globals里
$_SERVER
服务器和执行环境信息
$_FILES
可以实现文件上传功能
当我们上传文件时无法直接到达服务器的,是先到达缓冲区但是一般在/tmp文件夹下但是会被删除
要想不被删除通过这个move_uploaded_file函数可以实现修改文件上传的路径
move_uploaded_file(文件名字,上传路径);
$_COOKIE
COOKIE 技术
为了弥补HTTP 协议的无状态性,保持用户的会话状态,需要使用Cookie 技术。
在浏览器中查看cookie
document.cookie;
Cookie 过程:
- 用户提交账密
- 服务器进行身份认证
- 下发身份证,下发Cookie。
- 浏览器客户端用户所有的请求都会携带身份信息,携带Cookie 信息。
- 整体流程体现为,保持了HTTP 会话的状态性。
var_dump($_COOKIE);
写入Cookie
在浏览器的开发者模式里写入cookie//console
document.cookie = "username=admin";
document.cookie = "passoword=123456";
HTTP 请求报文:
GET /php/functions/cookie.php HTTP/1.1
Cookie: username=admin; password=123456
$_SESSION
当前脚本可用 SESSION 变量的数组。更多关于如何使用的信息,参见Session 函数 文档。
$_REQUEST
同时可以接受GET,POST,Cookie参数
但是不代表它启用使用此功能
在PHP study中的php-ini配置文件中的第625行修改
$_ENV
通过环境方式传递给当前脚本的变量的数组。
案例
预定义超全局数组练习
验证$_GET
先创建一个php文件应用该参数
<?php
var_dump($_GET);
?>
在url中使用GET方法上传参数
?user=xl&passwd=xl123
可以看到服务器接收并保存了
验证$_POST
先新建一个php文件初始化函数
<?php
var_dump($_POST);
?>
用burpsuite来进行修改请求方法附带请求内容修改请求头中的请求内容类型
服务器收到并保存
验证$_COOKIE
document.cookie="user='xl'";
document.cookie="passwd='123456'";
可以看到服务器接收并保存了
验证$_REQUEST
新建一个php文件将参数初始化
<?php
var_dump($_REQUEST);
?>
打开抓包软件对数据包进行修改将post和get请求方法一起使用
服务器接收并保存了
验证$GLOBALS
新建一个php文件初始化函数
<?php
var_dump($GLOBALS);
?>
访问网页可以看到所有超全局变量函数的信息
$_FILES实现文件上传功能并连接一句话木马
新建一个html表单
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="FILES.php"
method="POST"
enctype="multipart/form-data">
<input type="file" name="image" >
<input type="submit" value="Upload">
</form>
</body>
</html>
再新建一个php文件修改上传文件存储路径
<pre>
<meta charset="UTF-8">
<?php
$tmp_path=$_FILES['image']['tmp_name'];
echo "文件上传的临时路径{$tmp_path}"
$target="C:\phpstudy_2016\WWW\works\upload\\".$_FILES['image']['name'];
echo "文件上传的目标路径{$target}";
var_dump($tmp_path);
$a=move_uploaded_file($tmp_path,$target);
var_dump($_FILES);
?>
写好之后上传一句话木马文件
可以看到上传成功了
在蚁剑执行一句话木马