跟老韩学php代码审计(一)

跟老韩学安全:戳我以下

目录

PHP基础

PHP基础语法:

PHP注释:

PHP屏蔽错误:

PHP变量:

PHP数据类型:


我们在学习php代码审计之前,需要对php有一定的基础认识,在不要求做框架的代码审计的情况下,我们可以要求自己学习到具有基本的代码阅读能力也是可以(当然如果对自己仅仅只有这个要求,可以说要求有点低。如果对自己严格要求,那么是不建议你只是这么要求你自己的)。

我们在学习php代码审计或开发的过程中,由于官方提供了规范且详细的帮助手册,在过程中如果遇到任何自己生疏的语法函数可以通过官方查询,比如官方(http://www.php.cn)在右上角提供的搜索功能:

PHP基础

PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言,PHP 脚本是在服务器上执行后端脚本语言。

PHP基础语法:

在开始学习php之前,我们需要了解php的一些规范,如php文件扩展名、php的文件内容中的语法规范,如:

<?php

 echo "helloworld!";

?>

我们的php脚本格式均是由<?php作为开头,以?>作为结尾,当然我们也可以省略掉结尾的?>,所以很多时候我们看到php脚本后面没有?>不用太惊讶,如:

<?php

 echo "helloworld!";

在php的配置文件(php.ini)中有一个short_open_tag的值,开启以后可以使用PHP的短标签:<? ?>,如:

<?

 echo "helloworld!";

?>

需要注意我们的每一行代码结尾需要以;进行结束。

PHP注释:

注释是不让后端语言解释的一种方式,我们可以简单理解为,代码是给机器看的,而注释是给程序员看的,也就是说我们写完一段代码后,这段代码中的代码是会被执行的而注释中的内容是不会被执行的,如:

<?php

 echo "helloworld!"; //这是一个单行注释

?>

以上这段代码// 后面的内容则不会被执行,只有在我们查看源代码的时候才可以看到这段内容;执行结果如下:

那么// 仅仅只能注释一行内容,如果我们需要注释多行内容的话我们可以使用/**/来进行注释,注释的内容则是在星号之间,如:

<?php

 /*

你好

我是一个注释

*/

echo

?>

那么在/**/之间的内容则是注释,则不会被程序执行,而我们的hello!则会被代码执行并进行输出。

除了以上两种注释,我们还有一种注释,那么他与多行注释一样,不一样的地方在于在每一行开头都会有一个星号,如:

<?php

 /*

*你好

*我是一个注释

*/

echo "hello!";

?>

PHP屏蔽错误:

在有的时候我们php代码没有写错的情况下会出现页面现错误提示的情况,如:

这里是由于我们代码中有个get的id参数进行传参,但是我们在请求中并没有给予id参数导致的错误,我们可以使用@ 符号使他去屏蔽函数信息产生的一些错误或警告等情况,如:

PHP变量:

变量我们可以理解为存储容器,或者通俗一点来讲,就是将一个东西放到另一个东西里面,比如我需要把数字1放到a数字中,当我们提取a的时候则会提取到1。比如:

<?php

$a=1;   //将1存储到$a中,这里需要注意我们不能把数字当作变量。

//$1=1; 这是一个错误的示范。

echo $a; //echo 输出 $a。

?>

如以上代码,$a的值就是1,echo是官方定义的输出函数,输出$a,那么这个时候1在$a中,取$a则等于取了1,效果如下:

PHP数据类型:

在php中不同的数据类型能做的事不同,并且在不同的数据类型中,我们的格式也不一样,所以我们需要了解php的数据类型及作用,具体数据类型分以下几种:

标量数据类型

int     整数型

string  字符串型

Float   浮点型

Boolean  布尔型

复合数据类型

array   数组

object  对象类型  

特殊数据类型

Resource 资源

Null     空值

int(整数型):

整数型数据类型种,只能存放整数,如:1、2、3、4、5、6、7、8、9、0等整数数字或-1、-2、-3、-4等负数的整数类型。

实例代码如下:

<?php

$a=1;

var_dump($a);

?>

这里我们使用var_dump函数打印除了$a变量的数据类型。

var_dump函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

String(字符型):

在字符型数据种,需要将内容输入到引号中,如"hello",在这里面我们不光可以输入字母符号,还可以输入数字及汉字,注意:数字在引号中,不再作为整数型数据,而是作为字符串型数据解释,如:

<?php

$a="1";

var_dump($a);

?>

这里我们使用的是双引号,当然也可以使用单引号,不过这里注意,单引号与双赢好是由区别的,双引号里面的字段会经过编译器解释,然后再当作HTML代码输出,而单引号里面的不进行解释,直接输出,举个例子:

<?php

$a='hello,han';

echo $a;

echo "</br>";

echo '$a';

echo "</br>";

echo "$a";

echo "</br>";

var_dump($a);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值