隐藏在Windows PHP了shell_exec浏览器命令的用法参数(hide command u

2019-10-16 20:12发布

我能基于traceroute的网络。 我用了shell_exec执行过程,并显示通过浏览器的输出。 我有问题,我第一次打电话上的浏览器页面。 还有就是tracert命令显示的使用。 我试图通过地方躲它的函数里面的脚本。 是的,它的工作原理但像地图中的另一元素,当我开始加载页面不显示。 这是我的PHP代码:

<html>
<head>
<title></title>
<body>
<?
$host  = @$_POST['host']; 
$trace = @$_POST['trace'];
$self  = $_SERVER['PHP_SELF'];
?>
...
        <form name="tools" action="<?php $self ?>" method="post">
    <p><font size="2">Your IP is <?php $ip ?> </font></p>
    <input type="text" name="host" value=""></input>
    <input type="submit" name="trace" value="Traceroute!"></input>
    </form>
    <?php
    if ($_POST['submit']) 
{
    if (($host == 'Enter Host or IP') || ($host == "")) {
        echo '<br><br>You must enter a valid Host or IP address.';
        exit; } 

    if(eregi("^[a-z]",  $host))
    {
        $host_name = $host;
        $host_ip = gethostbyname($host);
    }
    else
    {
        $host_name = gethostbyaddr($host);
        $host_ip = $host;
    } 
}
    $host= preg_replace ("[-a-z0-9!#$%&\'*+/=?^_`{|}~]","",$host);
    $command = "tracert $host";
    $fp = shell_exec("$command 2>&1");
    $output .= (htmlentities(trim($fp)));
    echo "<pre>$output</pre>";
    echo '<br/>'; 
?>
...

</body>
</html>

和HTML代码(浏览器输出):

'''
<form name="tools" action="" method="post">

    <p><font size="2">Your IP is  </font></p>

    <input type="text" name="host" value=""></input>

    <input type="submit" name="trace" value="Traceroute!"></input>

    </form>

    <pre>Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] 
               [-R] [-S srcaddr] [-4] [-6] target_name

Options:
    -d                 Do not resolve addresses to hostnames.
    -h maximum_hops    Maximum number of hops to search for target.
    -j host-list       Loose source route along host-list (IPv4-only).
    -w timeout         Wait timeout milliseconds for each reply.
    -R                 Trace round-trip path (IPv6-only).
    -S srcaddr         Source address to use (IPv6-only).
    -4                 Force using IPv4.
    -6                 Force using IPv6.</pre><br/> <script type="text/javascript">

    var pinImage = new google.maps.MarkerImage ("http://chart.apis.google.com/chart?chst=d_map_xpin_letter_withshadow&chld=pin_star|%E2%80%A2|CC3300|000000|FF9900",

        new google.maps.Size (70, 83),

        new google.maps.Point (0,0),

        new google.maps.Point (10,34));

    var pinShadow = new google.maps.MarkerImage ("http://chart.apis.google.com/chart?chst=d_map_pin_shadow",

        new google.maps.Size (89, 85),

        new google.maps.Point (0, 0),

        new google.maps.Point (12, 35));



    function initialize() {

    var myLatlng = new google.maps.LatLng(38.822591, 150.46875);

    var myOptions = {

    zoom: 2,

    center: myLatlng,

    mapTypeId: google.maps.MapTypeId.ROADMAP,

    }

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        }
...

所有我需要的是隐藏的traceroute的帮助下使用就像在我的HTML代码。 所以,当我第一次加载页面时,它只是显示的文本框,按钮和地图,而Tracert的这种使用。 我真的尽快需要你的帮助。 太谢谢了。

Answer 1:

取而代之的了shell_exec使用EXEC。 您可以提供的命令,一个变量来接收输出,以及一个变量来接收状态,而不是捕捉这一切在EXEC的回报。

http://www.php.net/manual/en/function.exec.php

另外,请用escapeshellcmd和escapeshellarg用于消毒你的命令, http://www.php.net/manual/en/function.escapeshellcmd.php 。



Answer 2:

考虑一下这两条线做:

$host= preg_replace ("[-a-z0-9!#$%&\'*+/=?^_`{|}~]","",$host);
$command = "tracert $host";

您可能会发现它启发打印的价值$host立即运行命令之前。 你已经从你的主机名剥离出来的所有数字和字母 - 你到底打算看呢?

我可以理解你正在积极地剥离输入要尽量避免一个shell命令注入漏洞 。

相反剥离字符则应该保持特定的字符。 只保留[a-z0-9:.-] 。 (我不知道在PHP来表达这一点的最好办法括号内。 .只意味着.请您使用任何工具的含义。)(的:是对IPv6与数字名称主机随意抛弃它。如果你不想为了使IPv6)。



Answer 3:

如果我理解的实际问题,你只是不希望运行和输出的命令时没有输入。 你已经有了

if ($_POST['submit']) 
{

只要将其关闭}向下过去的代码:

       $host_ip = $host;
    } 
// removed from here
    $host= preg_replace ("[-a-z0-9!#$%&\'*+/=?^_`{|}~]","",$host);
    $command = "tracert $host";
    $fp = shell_exec("$command 2>&1");
    $output .= (htmlentities(trim($fp)));
    echo "<pre>$output</pre>";
    echo '<br/>'; 
} //added here

这似乎不是使用JS清洁剂给我,但JS是很容易了。 只是谷歌的“JS隐藏/取消隐藏”



文章来源: hide command usage argument on browser of shell_exec PHP in windows