我有一个名为getServerAddres()的php函数,我试图从Web浏览器执行exec()。我知道这不是使用该函数的正确方法,我只是使用远程代码注入来利用Web服务器的任务。有关如何使用exec()通过Web浏览器进行远程代码注入的任何帮助将非常感激。
让我们说屏幕上的登录名为:https://www.10.10.20.161/test/
function getServerAddress() {
if(isset($_SERVER["SERVER_ADDR"]))
return $_SERVER["SERVER_ADDR"];
else {
// Running CLI
if(stristr(PHP_OS, 'WIN')) {
// Rather hacky way to handle windows servers
exec('ipconfig /all', $catch);
foreach($catch as $line) {
if(eregi('IP Address', $line)) {
// Have seen exec return "multi-line" content, so another hack.
if(count($lineCount = split(':', $line)) == 1) {
list($t, $ip) = split(':', $line);
$ip = trim($ip);
} else {
$parts = explode('IP Address', $line);
$parts = explode('Subnet Mask', $parts[1]);
$parts = explode(': ', $parts[0]);
$ip = trim($parts[1]);
}
if(ip2long($ip > 0)) {
echo 'IP is '.$ip."\n";
return $ip;
} else
; // to-do: Handle this failure condition.
}
}
} else {
$ifconfig = shell_exec('/sbin/ifconfig eth0');
preg_match('/addr:([\d\.]+)/', $ifconfig, $match);
return $match[1];
}
}
}
php脚本来自login.php文件。
答案 0 :(得分:1)
你似乎不理解exec功能......
First thing, read the documentation here
此功能在服务器端执行,因此无法在客户端执行。
如果你想要的是主机的信息,那么你可以在那里运行命令,然后输出结果。
创建此文件:example.php,并输入以下代码:
<?php
echo exec('whoami');
?>
现在,将此文件上传到主机,并发出请求:
www.YOURHOST.smg /使用example.php
并阅读结果