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

时间:2018-07-17 23:38:51

标签: python

所以我有一个带有很多行的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对该行进行编码,直到在远程计算机上对其进行解码为止(我不想这样做,因为没有保证它将具有此命令)

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

  • 我正在构建一个渗透测试的反向shell处理程序。

1 个答案:

答案 0 :(得分:1)

shlex.quote将:

  

返回字符串s的脱壳版本。返回值是一个字符串,在无法使用列表的情况下,可以安全地用作shell命令行中的一个标记。

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