# SQL injection [TOC]  資料來源 : https://portswigger.net/web-security/sql-injection ### Database type and version  ### Second-order SQL injection  ### Retrieving multiple values within a single column 如果查詢只返回單個列 可以透過將多個值連接在此單個列中,輕鬆檢索多個值,最好使用合適的分隔符來區分這些組合值。例如,在 Oracle 上,您可以提交以下輸入: ```' UNION SELECT username || '~' || password FROM users--``` 這使用了在 Oracle 上是字符串連接運算符的雙管符號 ||。注入的查詢將用 ~ 字符分隔的用戶名和密碼字段的值連接在一起。 ## APPRENTICE ### Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data --2023/05/02 題目就說是 SQL injection 順便給範例 XD  一開始進來長這樣(除了congratulation那行),可以點下面的物品來觀察 URL 的變化,便於接下來做 injection 的動作  如果直接點下面的 "view details",顯示這樣 ```URLs/product?productId=10```  接著試試看點擊 Refine your search 中的一個選項,可以看到 ```URLs/filter?category=Food+%26+Drink```  在隨意選擇一個食物點進去看 URL,诶,又變回 ```URLs/product?productId=7```  試著輸入 ```'+OR+1=1--'``` 在 URL 上,看來能夠注入的地方不是這裡  回到選擇 Food&Drink 的那一頁,嘗試注入 ```URLs/filter?category=Food+%26+Drink'+OR+1=1--'```,成功出現除了食物以外的項目啦  ### Lab: SQL injection vulnerability allowing login bypass --2023/05/02 題目就直接說在 login 頁面,想辦法用 administrator 去登入  一樣熟悉的頁面,但是這次多了紅色框起來的 "My account" 看來目標在這裡啦  Login 頁面長這樣很陽春,我們在 username 注入 ```adminstrator' OR 1=1 --``` password 就隨便打  進來了 OUO  ## PRACTITIONER ### Lab: SQL injection UNION attack, determining the number of columns returned by the query --2023/05/15 透過 SQL injection 中的 UNION 攻擊將 NULL 塞入欄位中(應該是這樣吧  戳三次就出來了,我也很驚訝 OAO  ### Lab: SQL injection UNION attack, finding a column containing text --2023/05/15 痾,題目要使用 UNION 來攻擊和檢索資料,然後要得到一個隨機的字串,放入 UNION 之中 (大概是這樣吧  戳出欄位有三個  將第一個欄位改成 ```'abc'```  將 abc 換到中間的 NULL 就跑出這樣  將 abc 改成 Make the database retrieve the string: 'mkFd70' 後面的字串,就 successful  ### Lab: SQL injection UNION attack, retrieving data from other tables --2023/05/15 透過 SQL injection UNION 攻擊取得 admin 的帳號密碼  戳出來有兩個欄位  ```'UNION SELECT username, password FROM users--``` admin 的帳密都出來了 OUO  successful  ### Lab: SQL injection UNION attack, retrieving multiple values in a single column --2023/05/16 透過 SQL injection UNION 攻擊並取得 admin 的帳密  一樣戳出欄位為二  塞入 ```'UNION SELECT username, password FROM users--``` 失敗  塞入 ```'UNION SELECT username || ':' || password FROM users--``` 也失敗  看了一下解答,搞錯了將一個欄位合併,所以是 ```UNION SELECT NULL, username || ':' || password FROM users--```  successful  ### Lab: SQL injection with filter bypass via XML encoding --2023/05/16 這題呢是結合 SQL injection 和 XML 攻擊,透過 UNION 攻擊後端 database 取得 admin 的帳號密碼登入  首先這是最初的 request,尚未對它進行任何更動,Response 是 474 units  接著試試看 ```1+1```,發現 response 中的 units 增加了  試試看用 UNION 去戳,ㄟ~ Attack detected,被擋住了  既然被擋住了,那麼就 encode 成其他形式,有個東西叫做 Hackvertor,從 Extensions -> BApp Store -> Search "Hackvertor" -> 點擊 "install"  對著需要轉換的那行點擊右鍵 -> Extensions -> Hackvertor -> Encode -> hex_entities  回傳了所有的 username  加上 password 卻失敗了,需要找其他方法  在中間加上兩個 | 去隔開就行了,最後輸入為 ```1 UNION SELECT user || ':' || password FROM users```  successful 
×
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