空格,',',/,\<,>,&安培;,|过滤了如何使用Bash命令绕过它们

时间:2018-04-09 00:13:47

标签: bash

我有PHP代码使用一些bash代码,PHP代码可以运行它,它有一个错误,使bash中的RCE,

该命令也将执行“$(id)”命令

但如果我执行任何其他命令,如“ls -la”,它有一个空格 空格自动替换为“ - ”

我也检查了来源,我发现以下字符空格,',`,/,\,<,>,?,&,| 已过滤

如何绕过它们并执行像“wget link”这样的命令并运行它完美

**** **** UPDATE

我将以下代码添加为实例。 在sendcmd函数中发送命令

`https://pastebin.com/raw/1MfR6aic`

1 个答案:

答案 0 :(得分:1)

这是id

的(示例)输出
uid=1000(ibug) gid=1000(ibug)

由于这些字符未经过滤,您可以获得未经过滤的空格,如下所示:

ID=$(id)
echo${ID:14:1}foo

现在你有空间了。您可以使用echo -e,然后eval表达几乎任何字符。

我尝试了你的PHP代码,发现它有效:

sendcmd("http://52.27.167.139", "{echo,hello}");

然后用括号括起来并使用逗号。 shell会将大括号扩展为

echo hello