代码之家  ›  专栏  ›  技术社区  ›  DotNetRussell

安全地将python命令回送到文件中,而不执行它们

  •  0
  • DotNetRussell  · 技术社区  · 7 年前

    所以我有一个包含大量行的python文件,我想读入python,然后通过一个套接字回送到另一个文件中。

    假设我有foo.py文件

    import os
    os.popen('some command blah')
    print("some other commands, doesn't matter")
    

    然后我尝试打开文件,读取所有行,并将每一行回送到一个新文件中。

    有点像

    scriptCode = open(os.path.realpath(__file__)).readlines()
    for line in scriptCode:
        connection.send("echo " + line + " >> newfile.py")
    print("file transfered!") 
    

    但是,当我这样做时,命令将在远程shell中执行。

    所以我的问题是:

    如何在不执行任何关键字的情况下将文本安全地回送到文件中?

    我试过什么?

    • 在行周围添加单引号
    • 在行周围添加单引号,然后在行中向单引号添加反斜杠

    我考虑过但尚未尝试的事情:

    • base64将行编码到远程计算机上,然后对其进行解码(我不想这样做,因为没有保证它会有这个命令)

    我知道这很奇怪。我为什么要这样做?

    • 我正在建造一个PentestingReverseShell处理程序。
    1 回复  |  直到 7 年前
        1
  •  1
  •   Alex Taylor    7 年前

    shlex.quote 威尔:

    返回字符串s的shell转义版本。返回的值是一个字符串,可以安全地用作shell命令行中的一个标记,用于不能使用列表的情况。

    比自己引用字符串安全得多。