iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
Security

仿生人是否會夢見網頁山羊? 資安小白的30天Webgoat闖關紀錄系列 第 8

[DAY8]仿生人是否會夢見網頁山羊?--SQL Blind injection

  • 分享至 

  • xImage
  •  

今天我們要來學習SQL中有難度的部分啦,同時也是我覺得SQL injection中覺得最好玩的部分,畢竟這是第一個讓我覺得自己真的在滲透甚麼東西的地方

什麼是Blind injection?

由於一般情況下,網頁通常不會告訴我們資料填入後資料在資料庫執行的情況,往往只會有成功/失敗這兩種回應,所以我們要想辦法利用他們,把他們當成一種布林值(TRUE/FALSE)來確認我們的指令是否有成功
這裡用Webgoat自帶的範例解釋

假設有個網頁url是:https://my-shop.com/?article=4
那麼在程式庫裡面應該會這麼寫

SELECT * FROM articles WHERE article_id = 4

這時候,如果我們想測試的話,會在網址後面加入AND 1=1之類的代碼,變成https://my-shop.com/?article=4 AND 1=1
程式庫內會變成這樣

SELECT * FROM articles WHERE article_id = 4 AND 1=1

如果網頁還是正常運作顯示https://my-shop.com/?article=4 相同的畫面,那麼就代表這裡可以使用blind injection滲透
當我們再把後面的AND 1=1改成不成立的條件,例如AND 1=2時,頁面回傳的錯誤資訊就會成為我們的另一個布林值

實戰Webgoat SQL injection (advanced) 號碼5 (第二題)

https://ithelp.ithome.com.tw/upload/images/20260921/20184109bWTIqNfoky.png

總算來了,我們要來解這題BOSS關了
我們最終的目標是拿到tom的密碼
首先,我們先在註冊區隨便註冊一個叫123帳號來確保帳號重複註冊時真的會報錯

https://ithelp.ithome.com.tw/upload/images/20260921/20184109clFqtO8kg2.png

接著在每一個輸入格輪流嘗試分別使用

123' AND 1=1;--
123' AND 1=2;--

來測試是否有可以注入的地方
然後就會發現
https://ithelp.ithome.com.tw/upload/images/20260921/20184109ZH8MttIToM.png

https://ithelp.ithome.com.tw/upload/images/20260921/20184109yv392M3p7Q.png

看起來register的username欄就是我們Blind injection的根據地了
接著,雖然有點土法煉鋼,但我們來猜一下tom的帳號名,用Tom, tom, tommy之類常見的排列及大小寫組合後我們會發現
https://ithelp.ithome.com.tw/upload/images/20260921/2018410921f9rk7THo.png

看來我們運氣不錯,tom就是Tom的username
有了這個後,我們就能開始猜他的密碼了
有沒有能讓我們能一步一步慢慢推出密碼的好函式呢? 答案是有的
那就是substring()
主要用法是substring(字串名,從第x字開始,往後取y個字(包括起始點))
使用這個指令

接下來,在register的username輸入框輸入

tom' AND substring(password,NUMB,1) = 'CHAR';--

以便我們使用burp suite抓封包後當成範例txt

https://ithelp.ithome.com.tw/upload/images/20260921/20184109gG2jbwj3QJ.png

接著,我們DAY4時介紹的FUFF就能派上用場了
讓我們準備一個1~30數字的字典txt NUMB,以及一個包含a~z和0~9的字典CHAR
在terminal使用指令

ffuf -request 封包範例txt檔案路徑 -request-proto http -w CHAR字典表檔案路徑:CHAR -w NUMB字典表檔案路徑:NUMB -mr "already exist" -r 10 -s

-mr是用來讓我們可以挑出裡面有already exist這個字串的封包,因為他就是我們的答案
-r 是用來限制發送封包的速度,不然發太快有些會被跳過
-s是用來去除掉progress的資訊,只留下代入的參數以方便判讀

https://ithelp.ithome.com.tw/upload/images/20260921/20184109RP1rm6ZiwQ.png

答案: thisisaserectfortomonly

明日內容:SQL blind injection plus


上一篇
[DAY7]仿生人是否會夢見網頁山羊?--SQL UNION SELECT以及 JOIN
下一篇
[DAY9]仿生人是否會夢見網頁山羊?-- SQL Blind Injection 2
系列文
仿生人是否會夢見網頁山羊? 資安小白的30天Webgoat闖關紀錄9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言