代码审计基础之还不滚进来学习

释放双眼,带上耳机,听听看~!

在Python课程里咱们讲解了什么是局部变量与全局变量的概念,这里再次介绍一种变量,”超全局变量“

再次之前我们要预习一下局部变量与全局变量的概念

局部变量;在函数内定义的变量,称之为局部变量,是不可以被函数外进行引用的

全局变量;在函数外定义的变量,不能在函数中直接使用。因为他的作用不会

到函数内部,所以我们在使用Python时如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错

在PHP中则为global$a;是不是很相似,借此章,给大家讲一些PHP的基础知识,不多,因为我没怎么学过,但是代码可以看懂,可以说是边学审计顺便学PHP。

PHP基础知识点讲解。

PHP 脚本以 <?php 开始,以 ?> 结束:

 echo"hello word!";

echo是输出等同于C里面的printf与Python里的print。

变量的申请,其格式大致是$XX。

 <?php
 $txt="Hello world!";//与Python一样不用表明数据类型,变量$txt为字符串
 $x=5;//int型
 $y=10.5;
 ?>

现在开始进入作用域讲解,如下,我在文中说过作用域是脚本变量是否可引用或直接使用的一个知识点

如在函数外申请的变量可以被所有的脚本进行使用,当然我们的函数如果需要引用的话需要加上global关键词。

在函数内部申请的变量,称之为局部变量,如果对其概念不清的话建议,重看公众号文章进行学习。

这里我们提到了作用域,PHP作用域有几种呢?

  1. local

  2. global

  3. static

  4. parameter

global我们已经了解过了,指在函数里去引用全局变量

static作用域,PHP里函数结数时会删除所有的变量,然而你希望某些变量不被删除那就先给他打上static关键词,这样可以告诉程序,就像你们打赏天钧,结数在告诉我文章继续出。

每次的调用一次Tach(),他会把初始变量a自加,因为static会保留他的变量,所以输出的三次数值里会呈现于等差为1的递增。

超级全局变量

PHP中预定义了几个超级全局变量,他可以在任何的作用域中使用。

成员如下

  1. $GLOBALS//是PHP的一个超级变量组

  2. $_SERVER//包含了头信息,路径,脚本位置等信息的数组

  3. $_REQUEST

  4. $_POST

  5. $_GET

  6. $_FILES

  7. $_ENV

  8. $_COOKIE

  9. $_SESSION

    $_SERVER 变量中的重要元素:

$_SERVER[‘PHP_SELF’] 当前执行脚本的文件名,与 DOCUMENT ROOT 有关。例如,在地址为 HTTP://EXAMPLE.COM/TEST.PHP/FOO.BAR 的脚本中使用 $_SERVER[‘PHP_SELF’] 将得到 /TEST.PHP/FOO.BAR。FILE 常量包含当前(例如包含)文件的完整路径和文件名。从 PHP 4.3.0 版本开始,如果 PHP 以命令行模式运行,这个变量将包含脚本名。之前的版本该变量不可用。
$_SERVER[‘GATEWAY_INTERFACE’] 服务器使用的 CGI 规范的版本;例如,”CGI/1.1″。
$_SERVER[‘SERVER_ADDR’] 当前运行脚本所在的服务器的 IP 地址。
$_SERVER[‘SERVER_NAME’] 当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。(如: www.runoob.com)
$_SERVER[‘SERVER_SOFTWARE’] 服务器标识字符串,在响应请求时的头信息中给出。(如:Apache/2.2.24)
$_SERVER[‘SERVER_PROTOCOL’] 请求页面时通信协议的名称和版本。例如,”HTTP/1.0″。
$_SERVER[‘REQUEST_METHOD’] 访问页面使用的请求方法;例如,”GET”, “HEAD”,”POST”,”PUT”。
$_SERVER[‘REQUEST_TIME’] 请求开始时的时间戳。从 PHP 5.1.0 起可用。(如:1377687496)
$_SERVER[‘QUERY_STRING’] query string(查询字符串),如果有的话,通过它进行页面访问。
$_SERVER[‘HTTP_ACCEPT’] 当前请求头中 Accept: 项的内容,如果存在的话。
$_SERVER[‘HTTP_ACCEPT_CHARSET’] 当前请求头中 Accept-Charset: 项的内容,如果存在的话。例如:”iso-8859-1,*,utf-8″。
$_SERVER[‘HTTP_HOST’] 当前请求头中 Host: 项的内容,如果存在的话。
$_SERVER[‘HTTP_REFERER’] 引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER 的功能。简言之,该值并不可信。)
$_SERVER[‘HTTPS’] 如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。
$_SERVER[‘REMOTE_ADDR’] 浏览当前页面的用户的 IP 地址。
$_SERVER[‘REMOTE_HOST’] 浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR。
$_SERVER[‘REMOTE_PORT’] 用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER[‘SCRIPT_FILENAME’] 当前执行脚本的绝对路径。
$_SERVER[‘SERVER_ADMIN’] 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。(如:someone@runoob.com)
$_SERVER[‘SERVER_PORT’] Web 服务器使用的端口。默认值为 “80”。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
$_SERVER[‘SERVER_SIGNATURE’] 包含了服务器版本和虚拟主机名的字符串。
$_SERVER[‘PATH_TRANSLATED’] 当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
$_SERVER[‘SCRIPT_NAME’] 包含当前脚本的路径。这在页面需要指向自己时非常有用。FILE 常量包含当前脚本(例如包含文件)的完整路径和文件名。
$_SERVER[‘SCRIPT_URI’] URI 用来指定要访问的页面。例如 “/index.html”。

来源于菜鸟教程

PHP$_REQUEST用于收集HTML表单的数据。

传递数值111

在PHP中$_REQUEST可以获得以POST方法或者GET方法提交的数据

其次他比较慢,所以在此建议不要使用$REQUEST,应该从$GET,$POST,$COOKLE,$ENV,$SERVER等变量中取出需要的值这个亚子

$_SESSION

当前脚本可用 SESSION 变量的数组。

• $HTTP_SESSION_VARS 包含相同的信息(4.1.0已废弃),但它不是一个超全局变量。

注意:$HTTP_SESSION_VARS 和 $_SESSION 是不同的变量,PHP 处理它们的方式不同

POST与GET的恩恩爱爱

  • $_POST

  • $GET

  • • GET (URL传参)   $GET从服务器上获取数据,把参数数据队列加到提交表单的 ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL 中可以看到

• POST(隐藏传参)  $_POST向服务器传送数据。将表单内各个字段与其内容放置在 HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看 不到这个过程

故障排查,有的小伙伴在测试post提交时会遇到这种报错(以踩坑)

别慌,post提交和get提交不同,打开火狐post data 调试即可

本文源自微信公众号:渗透云笔记

人已赞赏
安全工具

代码审计 | Ecms定制版代码审计实战思路分享

2019-10-16 17:04:52

安全工具

路径常用函数(第十章)

2019-10-16 17:04:58

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索