在Web浏览器中调用exec()php函数

时间:2015-12-10 12:50:43

标签: php sql-injection reverse-engineering

我有一个名为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文件。

1 个答案:

答案 0 :(得分:1)

你似乎不理解exec功能......

First thing, read the documentation here

此功能在服务器端执行,因此无法在客户端执行。

如果你想要的是主机的信息,那么你可以在那里运行命令,然后输出结果。

创建此文件:example.php,并输入以下代码:

<?php
   echo exec('whoami');
?>

现在,将此文件上传到主机,并发出请求:

www.YOURHOST.smg /使用example.php

并阅读结果