Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python telnet服务器崩溃_Python_Buffer Overflow - Fatal编程技术网

python telnet服务器崩溃

python telnet服务器崩溃,python,buffer-overflow,Python,Buffer Overflow,每当我的客户端通过telnet连接到服务器时 telnet myip 43 当客户端在自己的机器上连续点击ctrl+c时,会导致telnet服务器崩溃。。。如何才能阻止这种情况?我的服务器是否有可能受到缓冲区溢出的攻击 这是我的脚本(非常基本的脚本) 尝试: 编辑valid\u chars以仅允许id参数使用允许的字符。当服务器崩溃时,是否会收到错误消息并进行回溯?我认为您删除了有趣的部分。我打赌您尝试打开该文件而不检查它是否存在或是否为同一文件名。这就是Python崩溃的原因。在打印x之前,

每当我的客户端通过telnet连接到服务器时

telnet myip 43
当客户端在自己的机器上连续点击ctrl+c时,会导致telnet服务器崩溃。。。如何才能阻止这种情况?我的服务器是否有可能受到缓冲区溢出的攻击

这是我的脚本(非常基本的脚本)

尝试:


编辑
valid\u chars
以仅允许id参数使用允许的字符。

当服务器崩溃时,是否会收到错误消息并进行回溯?我认为您删除了有趣的部分。我打赌您尝试打开该文件而不检查它是否存在或是否为同一文件名。这就是Python崩溃的原因。在打印x之前,有x=urllib2.urlopen(').read(),但是有没有办法从字符串中去掉坏字符?就像在php中一样,有htmlspecialchar()或@Mathias之类的东西
#!/usr/bin/env python
import sys
import socket
import urllib2
def main():
    s = socket.socket()         # Create a socket object
    host = '' 
    BUFFER_SIZE = 2048
    port = 43                   # Reserve a port for your service.
    s.bind((host, port))        # Bind to the port
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.listen(120)               # Now wait for client connection.
    while True:
        data = ''
        print 'waiting for connection...'
        c, addr = s.accept()     # Establish connection with client.
        print 'Got connection from', addr
        data = c.recv(BUFFER_SIZE)
        print 'requested website: '+data
        print x
        c.send(x)
        c.close()                # Close the connection
if __name__ == '__main__':
    main()
import string
valid_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)

[...]

        data = c.recv(BUFFER_SIZE)
        data=''.join(c for c in data if c in valid_chars)
        print 'requested website: '+data
        if len(data)>0:
            try:
                urllib2.urlopen('localhost:2020/?id='+data ).read()
                print x
                c.send(x)
            except:
                pass
        c.close()                # Close the connection