我正在运行以下内容:
$file_content[122] = 'Shell "cmd.exe /c cd %appdata% & test.exe -o ' . $p. ' -u ' . $user . ' -p ' . $pass . ' & pause", vbMaximizedFocus';
$p
基本上是$_GET['p'];
用户将输入一个协议地址,例如+tcp://host
或http+udp://host
,我基本上需要在字符串中输入该+
。
我的问题是,由于 p
的值中包含+
字符,所以我没有得到预期的响应。
您不能通过 URL 以原始格式的参数发送+
。因为 PHP 会将其读取为查询字符串中的空格。
您需要做的是在将其放入URL之前对其进行编码,然后再对其进行解码。
这会将 + 更改为编码版本
例如,在以下之前:
$p = urlencode($some_value);
$url = 'some/path/here?p=' . $p . '&user=' . $user; // etc
// do your redirect
然后之后:
$p = urldecode($_GET['p']);
$file_content[122] = 'Shell "cmd.exe /c cd %appdata% & test.exe -o ' . $p. ' -u ' . $user . ' -p ' . $pass . ' & pause", vbMaximizedFocus';