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使用不當的後果

import os
post = input("請輸入一個IP:")
os.system("ping " + post)

就這樣短短的3行演示一下吧。什麼過濾都不做直接來。
我輸入www.baidu.com,他就執行了ping www.baidu.com的命令。
在這裏插入圖片描述
當我輸入的是`127.0.0.1 & net user時,可以看到它不僅執行了ping命令還執行了net user命令,這就是一個命令注入漏洞了。我還可以使用別的命令讓他去執行。
在這裏插入圖片描述

總結

這是一個十分好用的函數,可以很大程度幫助我們提高命令執行的效率,特別是要進行一些重複性的命令執行時,但是當它再服務器上對外接收輸入,又未經過濾時就會時一個定時炸彈,留下了一個命令執行的漏洞,黑客完全可以通過構造命令來對服務器進行命令注入攻擊,然後利用一些命令來實現遠程控制或者遠程操控。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章