php特性

2024-04-16 20:39:07 浏览数 (1)

Windows系统中index.php.等同于index.php Linux系统不行 Windows中 http:// http:\都一样

c=_GET['$work'] a=‘hello,world’ b=''

?work=hhello,worldello,word;

(get 数据流)?abc=data://text/plain;base64;64编码的内容 data协议

file=php://filter/convert.base64-encode/resource=flag.php filter协议查看flag.php的源码

两个操作都要执行时用&

php://filter/iconv.UCS-4.UCS-2/resourse=flag.php 输入编码和输出编码

元素/代码

描述

$_SERVER['PHP_SELF']

返回当前执行脚本的文件名。

$_SERVER['GATEWAY_INTERFACE']

返回服务器使用的 CGI 规范的版本。

$_SERVER['SERVER_ADDR']

返回当前运行脚本所在的服务器的 IP 地址。

$_SERVER['SERVER_NAME']

返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。

$_SERVER['SERVER_SOFTWARE']

返回服务器标识字符串(比如 Apache/2.2.24)。

$_SERVER['SERVER_PROTOCOL']

返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。

$_SERVER['REQUEST_METHOD']

返回访问页面使用的请求方法(例如 POST)。

$_SERVER['REQUEST_TIME']

返回请求开始时的时间戳(例如 1577687494)。

$_SERVER['QUERY_STRING']

返回查询字符串,如果是通过查询字符串访问此页面。

$_SERVER['HTTP_ACCEPT']

返回来自当前请求的请求头。

$_SERVER['HTTP_ACCEPT_CHARSET']

返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)

$_SERVER['HTTP_HOST']

返回来自当前请求的 Host 头。

$_SERVER['HTTP_REFERER']

返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。

$_SERVER['HTTPS']

是否通过安全 HTTP 协议查询脚本。

$_SERVER['REMOTE_ADDR']

返回浏览当前页面的用户的 IP 地址。

$_SERVER['REMOTE_HOST']

返回浏览当前页面的用户的主机名。

$_SERVER['REMOTE_PORT']

返回用户机器上连接到 Web 服务器所使用的端口号。

$_SERVER['SCRIPT_FILENAME']

返回当前执行脚本的绝对路径。

$_SERVER['SERVER_ADMIN']

该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。

$_SERVER['SERVER_PORT']

Web 服务器使用的端口。默认值为 “80”。

$_SERVER['SERVER_SIGNATURE']

返回服务器版本和虚拟主机名。

$_SERVER['PATH_TRANSLATED']

当前脚本所在文件系统(非文档根目录)的基本路径。

$_SERVER['SCRIPT_NAME']

返回当前脚本的路径。

$_SERVER['SCRIPT_URI']

返回当前页面的 URI。

phpXSS

代码语言:javascript复制
 <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

现在,如果用户进入的是地址栏中正常的 URL:"http://www.example.com/test_form.php",上面的代码会转换为:

代码语言:javascript复制
 <form method="post" action="test_form.php">

到目前,一切正常。

不过,如果用户在地址栏中键入了如下 URL:

代码语言:javascript复制
 http://www.example.com/test_form.php/">

在这种情况下,上面的代码会转换为:

代码语言:javascript复制
 test_form.php/"><script>alert('hacked')</script>
代码语言:javascript复制
 <form method="post" action="test_form.php"/><script>alert('hacked')</script>

这段代码加入了一段脚本和一个提示命令。并且当此页面加载后,就会执行 JavaScript 代码(用户会看到一个提示框)。这仅仅是一个关于 PHP_SELF 变量如何被利用的简单无害案例。

代码语言:javascript复制
 <?php
 // 定义变量并设置为空值
 $name = $email = $gender = $comment = $website = "";
 ​
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $name = test_input($_POST["name"]);
   $email = test_input($_POST["email"]);
   $website = test_input($_POST["website"]);
   $comment = test_input($_POST["comment"]);
   $gender = test_input($_POST["gender"]);
 }
 ​
 function test_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
 }
 ?>

0 人点赞