# Web SQL injection Lab14 - 資料不會顯示 - 錯誤不會顯示 但是!查詢是同步執行 ➜ 我們可以靠「延遲」來推斷資料! --- 題目說網站不會洩漏任何資訊,但可以透過延遲來完成,所以我們可以到 Port siwwger 官方給的語法來嘗試。 ![image](https://hackmd.io/_uploads/HJOGD5hExl.png) 再來一樣先進入網站並攔截請求。 ![image](https://hackmd.io/_uploads/By8UvqnExx.png) ![image](https://hackmd.io/_uploads/r1IwP5nEll.png) 先嘗試 MySQL 看看: ``` ' AND SLEEP(10)-- ``` SQL 語法: ``` SELECT * FROM tracking WHERE id = 'xyz' AND SLEEP(10)--' ``` ![image](https://hackmd.io/_uploads/BJIJ_cnVgl.png) 但看起來無效,他的時間才跑 268 毫秒,所以接著用 PostgreSQL 嘗試。 ``` ' ||pg_sleep(10)-- ``` :::info 為什麼不用 SELECT? 因為 `pg_sleep()` 就是一個可以「直接執行」的函數(它不是資料查詢),要放也是可以,但要看支不支援多語句查詢,但基本上有設 `prepare()` 或限制 `;`,所以建議直接 `pg_sleep(10)`。 ::: ![image](https://hackmd.io/_uploads/rkIrOchNgl.png) ![image](https://hackmd.io/_uploads/rJCYK9nVel.png) 跑了兩萬多毫秒(20.296 秒),顯然是成功延遲了,所以也完成本題 Lab。 ![image](https://hackmd.io/_uploads/Bkxc9c3Exe.png) ---