资讯专栏INFORMATION COLUMN

代码执行小记

ethernet / 2314人阅读

摘要:如果同时提供和参数,命令执行后的返回状态会被写入到此变量。返回值命令执行的输出。如果执行过程中发生错误或者进程不产生输出,则返回。返回值没有返回值。函数包含执行运算符。元字符转义说明对字符串中可能会欺骗命令执行任意命令的字符进行转义。

命令执行

用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下
就执行命令,可能会允许使用者通过改变 SPATH或程序执行环境的其他方面来执行一个恶意构造的代码

命令执行与代码执行区别1. 命令执行漏洞:直接操作系统命令2. 代码执行漏洞:靠执行脚本代码调用系统命令

命令执行(相关函数)

参考文档:PHP: 程序执行函数 - Manual

System函数
string system( string command int& return_Var) # system-执行外部程序,并且显示输出参数:command:要执行的命令return_var:如果提供return_var参数,则外部命令执行后的返回状态将会被设置到此变量中返回值:成功则返回命令输出的最后一行,失败则返回 FALSE
Exec函数
exec(string $command, array &$output = ?, int &$return_var = ?): string#exec() 执行 command 参数所指定的命令。参数command要执行的命令。output如果提供了 output 参数, 那么会用命令执行的输出填充此数组, 每行输出填充数组中的一个元素。 数组中的数据不包含行尾的空白字符,例如 /n 字符。 请注意,如果数组中已经包含了部分元素,exec() 函数会在数组末尾追加内容。如果你不想在数组末尾进行追加, 请在传入 exec() 函数之前 对数组使用 unset() 函数进行重置。return_var如果同时提供 output 和 return_var 参数, 命令执行后的返回状态会被写入到此变量。返回值命令执行结果的最后一行内容。 如果想要获取命令的输出内容, 请确保使用 output 参数。
shell_exec函数
shell_exec(string $cmd): string #shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。参数:$cmd 要执行的命令。返回值命令执行的输出。 如果执行过程中发生错误或者进程不产生输出,则返回 null
passthru函数
passthru(string $command, int &$return_var = ?): void #passthru - 执行外部程序并且显示原始输出参数command要执行的命令。return_var 如果提供 return_var 参数, Unix 命令的返回状态会被记录到此参数。返回值:没有返回值。
反引号``
与shell_exec功能相同,执行shell命令并返回输出的字符串<?php	highlight_file(__FILE__);	$cmd = $_GET["cmd"];	$output=`$cmd`;	echo $output;?>
防御函数
1.escapeshellarg(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数说明escapeshellarg(string $arg): stringescapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。对于用户输入的部分参数就应该使用这个函数。shell 函数包含 exec(), system() 执行运算符 。2.escapeshellcmd(PHP 4, PHP 5, PHP 7, PHP 8)escapeshellcmd — shell 元字符转义说明escapeshellcmd(string $command): stringescapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义。反斜线(/)会在以下字符之前插入: &#;`|*?~<>^()[]{}$/, /x0A 和 /xFF。 " 和 " 仅在不配对儿的时候被转义。 在 Windows 平台上,所有这些字符以及 % 和 ! 字符都会被空格代替。3.在PHP中禁止disable_functions(禁用一些危险函数)4.参数值尽量使用引用号包裹,并在拼接前调用adds

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/123416.html

相关文章

  • JavaScript使用小记

    摘要:简单地说程序就是数据和方法计算机能做的就是计算这个数据可以是字符串各种类型的数值整数小数等类内的属性根本上是还是的基本数据类型布尔类型的东东为了更加快速地写出代码现在的语言都是高层次的抽象即所谓的高级编程语言了高级编程语言中的一些特性如访问 简单地说, 程序就是数据和方法, 计算机能做的就是计算, 这个数据可以是: 1.字符串, 2.各种类型的数值(整数, 小数等), 3.Java类内...

    stefan 评论0 收藏0
  • gulp4.0升级小记

    摘要:前言周日在公司的新电脑在以前配置的目录按下时发现报了错,百度了一下得知原来已经到了版本,就花了一点时间去升了个级,顺便记下我个人使用到的配置文件新版本的不同点,文笔和水平有限,多多见谅新引入新引入的可替换老版的和,代码更简洁是任务监听是任务 前言 周日在公司的新电脑在以前gulp3.9配置的目录按下npm install时发现报了错,百度了一下得知原来gulp已经到了4.0版本,就花了...

    zorpan 评论0 收藏0
  • h5滑动到底部写法以及滑动到某个元素执行动画写法(随笔小记

    摘要:前言不说废话直接上,分别解决两个问题,问题一滑动到底部写法。问题二滑动到某个元素执行动画写法。问题一写法在的底部放置一个然后搞定问题二写法借助插件,然后自行百度下载不解释然后是动画效果代码也加上然后正文写法如下。 前言 不说废话直接上,分别解决两个问题,问题一:滑动到底部写法。问题二:滑动到某个元素执行动画写法。 问题一写法 在body的底部放置一个然后 function goToBo...

    MingjunYang 评论0 收藏0
  • 构造函数小记

    摘要:也就是说这个变量,保存的内存地址就是,同时被标记为的实例以上就是构造函数的整个执行过程。 前言算是 当一个函数创建好以后,我们并不知道它是不是构造函数(构造函数习惯上首字母大写),只有当一个函数以 new 关键字来调用的时候,我们才能说它是一个构造函数 eg: function Person (name, age) { this.name = name; this....

    cangck_X 评论0 收藏0
  • javascript数组小记

    摘要:它们的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为的成员,然后方法会返回该成员,返回该成员的位置。 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构。 它存储一系列同一种数据类型的值,但是在javascript里可以在数组里保存不同类型的值,但是我们最好还是要遵守最佳实践,不要那么做。 创建和初始化,javascript声明,创建和...

    smartlion 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<