Python学习之OS库的system函数

Python学习之OS库的system()函数

引入

今天学到了一个十分好用的函数,那就是system()函数,这是一个包含再OS库中的一个函数,用于系统命令执行,方便确实是方便但是也有安全风险,如果对输入没有做好过滤,就是出现命令执行(命令注入)漏洞,如果是在服务器对外web页面犯了这样的错误,这样就会威胁到服务器安全。

system()使用实例

system(需要执行的cmd命令),这个是system函数的用法。下面通过一个实例来说明:

import os
libs = {
     "numpy","matplotlib","pillow","sklearn","requests","jieba","beautifulsoup4","wheel","networkx","sympy","pyinstaller","django","flask","werbot","pyQt5","pandas","pyopengl","pypdf2","docopt","pygame"}
try:
    for lib in libs:
        os.system("pip install "+lib)
    print("Successful")
except:
    print("Failed Somehow")

这个实例用于命令批量安装python第三方库,大大提升了安装效率,自动化安装,避免了多次命令输入,重复低效。运行结果如下,真的是太爽了。
Python学习之OS库的system函数_第1张图片

Python使用不当的后果

import os
post = input("请输入一个IP:")
os.system("ping " + post)

就这样短短的3行演示一下吧。什么过滤都不做直接来。
我输入www.baidu.com,他就执行了ping www.baidu.com的命令。
Python学习之OS库的system函数_第2张图片
当我输入的是`127.0.0.1 & net user时,可以看到它不仅执行了ping命令还执行了net user命令,这就是一个命令注入漏洞了。我还可以使用别的命令让他去执行。
Python学习之OS库的system函数_第3张图片

总结

这是一个十分好用的函数,可以很大程度帮助我们提高命令执行的效率,特别是要进行一些重复性的命令执行时,但是当它再服务器上对外接收输入,又未经过滤时就会时一个定时炸弹,留下了一个命令执行的漏洞,黑客完全可以通过构造命令来对服务器进行命令注入攻击,然后利用一些命令来实现远程控制或者远程操控。

你可能感兴趣的:(Python,python,安全)