PHP危险函数的持续学习

Posted mortals-tx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP危险函数的持续学习相关的知识,希望对你有一定的参考价值。

记录下遇到过的php危险函数

 

0x01 escapeshellarg()与escapeshellsmd()联合

先给出官方的定义:

escapeshellarg ( string $arg ) : string

将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。
对于用户输入的部分参数就应该使用这个函数。shell 函数包含 exec(), system() 执行运算符 。

 

该函数单独使用的时候,是安全的,但是当与escapeshellcmd函数一起使用,且先使用escapeshellarg,再使用escapeshellcmd函数,就可能出现危险操作

escapeshellarg函数先将$arg变量里的单引号进行转义,变成 \‘,当所有单引号都被转义之后,再在左右加上单引号(‘\‘‘),再到escapeshellcmd函数的时候

scapeshellcmd会将$arg变量里面的这些字符之前加了反斜杠(\):&#;`|*?~<>^()[]$\\x0A 和 \xFF。  和 " 仅在不配对儿的时候被转义。 在 Windows 平台上,所有这些字符以及 % 和 ! 字符都会被空格代替。

 

通过这两个函数,可以通过特殊的构造,来实现单引号的逃逸,进而shell函数,达到读取信息。

在BUUCTF平台上Online Tool这个web题里面学习到的构造,变量首尾用单引号。具体可以看我BUUCTF复现2。

 

以上是关于PHP危险函数的持续学习的主要内容,如果未能解决你的问题,请参考以下文章

php函数源代码 C编写 持续更新

php实用小技巧持续更新

python常用内置函数学习(持续更新...)

学习一个PHP中用于检测危险函数的扩展Taint

DevOps成功的秘诀是什么,从持续集成和持续部署开始!

php,mysql,linux,redis,docker等相关技术经典面试题,新手收藏学习,持续更新中。。。