您当前位置: 首页 » 敏感函数 » escapeshellcmd()

escapeshellcmd()

2017年2月18日 | 发表评论(0) 查看评论

其实算不上漏洞,只是一个小细节,ctf中可能会遇到。在研究escapeshellcmd()之前有必要看一下官方的解释


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

反斜线()会在以下字符之前插入: #&;`|*?~<>^()[]{}$, x0AxFF 仅在不配对儿的时候被转义。 在 Windows 平台上,所有这些字符以及 % 都会被空格代替。(译注:实际测试发现在 Windows 平台是前缀 ^ 来转义的。)


先来看一下相关代码功能:

如果输入http://127.0.0.1/test/test.php?a=whoami >c:/111.txt 则输出whoami >c:/111.txt并成功执行命令。

但是使用escapeshellcmd()后

可以看到输出whoami^>c:/111.txt 因为>前面加了^注释。

本文探讨的重点在“仅在不配对儿的时候被转义” 

p牛并根据这个点出了一个小题目:

这里只讲escapeshellcmd中相关内容

要求结果不能为.php,但是在bash中””代表空字符串,在进入bash后空字符串不再保留,因此传入.php和.ph p效果是一样的。

所以在此题中,我们可以使用.ph””p来使if判断失败

注:上述代码须在linux下运行如果是win则需要添加$ip = str_replace ( ‘^>’, ‘>’, $ip );

分类:

敏感函数

| 标签:

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">