sql注入——盲注

为小星星学java發表於2024-03-18

盲注分為兩類:

  • 布林盲注:字面意思,只有對和錯兩種,執行注入的sql語句後,頁面看不到別的內容,只能看到頁面的兩種變化,一種是執行沒出問題的頁面,一種是執行錯誤的頁面
  • 時間盲注:時間盲注在執行注入的sql語句後,無論有沒有問題,他的頁面始終不變

這裡介紹幾個函式:

  • Length()函式用來識別括號內字串的長度
  • ascii()函式可以將單個字串轉換為ASCII碼
  • substr()這是一個分割函式,它需要三個引數substr(“需要分割的資料”,“從哪裡開始分割”, “分多少位”)
  • if()函式,基本在很多的程式語言都有接觸到。在這裡它也需要三個引數:if(“條件”,“條件為True, 執行這裡”,“條件為False,執行這裡”)
  • sleep()函式,睡眠的意思,能控制你睡眠多少秒

手工注入基本步驟:先測試出是哪種盲注型別,因為頁面不會回顯結果,所以必須都是靠猜,可以轉換成ascll碼,在sql裡面比大小確定字母,判斷頁面的變化

  1. 注入點測試
  2. 猜資料庫名長度
  3. 猜資料庫名(ASCII)
  4. 猜表名長
  5. 猜表名
  6. 猜欄位名長
  7. 猜欄位名
  8. 猜資料長
  9. 猜資料

來一段注入程式碼以供參考:?id=1' and (ascii(substr((select column_name from information_schema.columns where table_name='users' limit 1,1),1,1)))<80--+