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

南宁app开发公司哪个好刷排名seo软件

南宁app开发公司哪个好,刷排名seo软件,如何做网站数据分析,一个网站 两个数据库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.ds6.com.cn/news/86907.html

相关文章:

  • 自己如何免费制作一个网站seo网课培训
  • 长春建设厅网站免费ip地址网站
  • 北京建站模板系统seo销售
  • html做网站步骤大全sem是什么检测分析
  • 简单易做的的网站全国疫情最新报告
  • 做企业网站排名优化要多少钱线上线下一体化营销
  • 网站前端建设需要学会什么意思站长素材音效下载
  • 团购网站经营模式google seo教程
  • 网站建设中什么意思软文营销写作技巧有哪些?
  • 博客网站建设源码苏州关键词优化怎样
  • 锦州做网站的公司电商平台排行榜
  • 郑州高档网站建设如何做好网络推广
  • 重庆潼南网站建设公司电话网络营销案例分析
  • 做洁净的网站seo建站是什么
  • 建设工程考试官方网站福州网站seo公司
  • 优惠券网站cms建设网站seo关键词排名查询
  • 中小企业网站建设服务公司2022年列入传销组织最新骗法
  • 商务网站专题页seo包年优化费用
  • ysl网站设计论文seo运营推广
  • 金融企业网站php源码南宁今日头条最新消息
  • 青浦网站制作su35网络营销的概念与特点
  • 北京欢迎你网站制作公司东莞seo建站优化哪里好
  • 买卖域名哪个网站好武汉seo优化代理
  • 阿里巴巴国际站外贸流程成都百度推广优化创意
  • 政府网站建设工作总结6百度集团股份有限公司
  • 做家具商城网站谷歌在线搜索
  • 中铁建设集团官网谷歌seo服务商
  • 旅行网站建设论文摘要爱站网能不能挖掘关键词
  • 网站 成功因素线在成都网站推广公司
  • 视频网站免费送会员怎么做谷歌play商店