当前位置: 首页 > news >正文

金华企业网站建设公司wordpress用户登录界面插件

金华企业网站建设公司,wordpress用户登录界面插件,网络推广经验分享,厦门app网站建设escapeshellcmd escapeshellcmd(string $command): string command--要转义的命令。 escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义。 …

escapeshellcmd

escapeshellcmd(string $command): string

command--要转义的命令。

escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义。

反斜线(\)会在以下字符之前插入:&#;`|*?~<>^()[]{}$\\x0A\xFF'" 仅在不配对儿的时候被转义。在 Windows 平台上,所有这些字符以及 %! 字符前面都有一个插入符号(^)。

escapeshellarg

escapeshellarg(string $arg): string

arg--需要被转义的参数

escapeshellarg() 把字符串转义为可以在 shell 命令里使用的参数

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

在 Windows 上,escapeshellarg() 用空格替换了百分号、感叹号(延迟变量替换)和双引号,并在字符串两边加上双引号。此外,每条连续的反斜线(\)都会被一个额外的反斜线所转义。

shell函数

 shell 函数包含exec()、system() 和执行运算符

system()

在windows系统中,system函数直接在控制台调用一个command命令。

执行运算符:

PHP 支持一个执行运算符:反引号(` `)

PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回。使用反引号运算符“`”的效果与函数 shell_exec() 相同

exec():

exec() 执行 command 参数所指定的命令。

exec(string $command, array &$output = null, int &$result_code = null): string|false

 command

要执行的命令。

 output

如果提供了 output 参数, 那么会用命令执行的输出填充此数组

 result_code

如果同时提供 outputresult_code 参数,命令执行后的返回状态会被写入到此变量

参数注入

  基本用法:
<?phpecho escapeshellarg('Hello');
// 输出值为:'Hello'echo escapeshellarg('Hello\'');
// 输出值为:'Hello'\'''(在命令行使用 echo 'Hello'\''',只会输出 Hello')
关键的话

引用自谈escapeshellarg绕过与参数注入漏洞 | 离别歌

  • 这个字符串应该出现在“参数值”的位置,而不是出现在参数选项(option)中。
  • 单引号并不是区分一个字符串是“参数值”或“选项”的标准

 接下来我们好好理解一下这句话

参数和参数选项的区别
参数:参数值是在命令行或函数调用中,用来传递具体数据或信息给程序或函数的部分。它是某个参数的实际取值
参数选项:参数选项是用来配置程序或函数行为的标志或开关。它不包含具体的数值,而是用于启用或禁用某些功能
实例:

Linux 中通常使用 - 或者 -- 来作为选项(Option)的标识符

而如果没有name,cat就变成了参数

也可以取消这种差异,我们在中间加--即可

总结

在了解“参数”和“选项”后,我们可知在命令后使用 escapeshellarg 并不能阻止命令执行(参数和选项并不依靠单引号)

gitlist 0.6.0远程命令执行漏洞,下面是该项目在执行过程中生成的命令:

git grep -i --line-number -e '--open-files-in-pager=id;' master
# 其中 --open-files-in-pager 的参数会被执行。

escapeshellarg 可以逃逸并达到执行命令的关键:

  • 函数参数可控
  • 执行的命令中有执行命令的选项(类似 “–open-files-in-pager=id;” 的等号形式)

逃逸字符

例题:

<?php$payload = '';
$code = urldecode($payload);function filter($str)
{if (preg_match("/system|exec|passthru|shell_exec|pcntl_exec|bin2hex|popen|scandir|hex2bin|[~$.^_`]|\'[a-z]|\"[a-z0-9]/i", $str)) {return false;} else {return true;}
}if (filter($code) == 1) {eval($code . ";");
} else {die("18cm30p !! :< ");
}

在题目中过滤了很多命令执行的函数。还有两段比较关键的正则\'[a-z]和\"[a-z0-9],也就是字母无法和引号接触。

通常这种正则的绕过,都是采用编码转义的方式来绕过的。

    1.不可见字符又可以让 preg _match 函数中的正则检测失效
    2.escapeshellcmd又可以将不可见字符消除
    3.最终 eval 能执行正常的字符串。
 

文章内容参考见:

谈escapeshellarg绕过与参数注入漏洞 | 离别歌

浅谈CTF中escapeshellarg的利用_escapeshellarg 绕过-CSDN博客

PHP: escapeshellarg - Manual

http://www.yayakq.cn/news/533490/

相关文章:

  • 服装生产erp管理软件临沂seo排名外包
  • 我想要个网站用dw设计最简单的网页
  • 网站建设与维护内容网站建设与制作外包服务
  • 做旅游网站犯法吗华为手机价格一览表
  • 有没有接做网站私活的平台php网站建设与管理
  • php网站开发设计系统石家庄网站搭建公司
  • 英文网站建设szjijie南京集团网站建设
  • 网站网站开发的公司电话公司简介万能模板
  • 网站模板视频教程大连网站建设领超最好
  • 做外单网站有哪些内容php注册网站源码带数据库
  • 政务网站建设论文美食网站要怎么做
  • 什么是企业型网站汉中市建设工程审批
  • 网站建设解决方案一般的美工可以做网站吗
  • 岳阳网站设计公司WordPress英文主题变中文
  • 网站建设设计师招募蜗牛星际做网站
  • 做多国语言网站外发加工会计分录
  • 上海建设银行招聘网站有哪些网站做二手房好的
  • 网站如何进行seowordpress朗读句子插件
  • c 网站开发引擎抖音代运营文员是干嘛的
  • 音乐网站建设方案书模板游戏网站模
  • 如何网站建设策划方案网站开发实施计划
  • 福州 网站制作 外贸建筑公司企业所得税
  • 怎么做网站的界面网站换域名 蜘蛛不来
  • 怎么用网站视频做自媒体网站建设预览
  • 做外汇看新闻在什么网站看中高风险区域最新名单
  • 金华手机网站建设商标注册申请流程图
  • 网站死链删除西安最新数据消息
  • 免费网站建设建议网站建设规划书的制作
  • 网站建设费用做做什么科目设计师常用的图库网站
  • 西安高端网站制作网站建设基本概述