脚本 – ‘netcat -e’没有转发stdout

我正在使用netcat创建一个使用以下命令运行python脚本的后门:

netcat -l -p 1234 -e 'python /script.py'

然后我用另一个shell连接到后门:

netcat localhost 1234

script.py是一个简单的循环,它读取输入,将其保存到文件中,然后将其打印回来.现在无论我在第二个shell中编写什么内容都会转到脚本并成功保存到文件中.但是,我没有在第二个shell上看到脚本的输出.我尝试了python的print和sys.stdout.write方法,两者似乎都失败了.我不知道为什么输出会被转发回第二个shell,如果我使用它:

netcat localhost 1234 /bin/bash

但不是我的脚本.我显然遗漏了一些重要的东西.这是我的脚本:

import sys

while 1:
    kbInput = sys.stdin.readline()
    sys.stdout.write( 'Input: '+kbInput)
    f  = open("output.txt", "w")
    f.write(kbInput)
    f.close()
    print

解决方法:

你对stdout的写入是由python缓冲的,只有当缓冲区已满时才会写入.有2个简单的修复:

>在python命令中添加-u选项以询问无缓冲输出(‘python -u /script.py’).
>或者,每次写入后刷新输出.在您的示例中,在行sys.stdout.write(‘Input:’kbInput)之后添加以下行:

sys.stdout.flush()
上一篇:i春秋Backdoor


下一篇:VSFTPD v2.3.4 著名笑脸漏洞 Backdoor Command Execution