第二十五關:
這關是過濾了and 和or
輸入?id=1' or '1'='1
發現or被過濾了,將or換成and也一樣。
輸入?id=1' oorr '1'='1
這樣就可以了,將一個or置空后,oorr還是會變成or。
其實感覺這關有點問題就是,這關可以利用聯合注入來查詢,其實根本不需要and和or的,and和or只是測試的時候初步判斷注入的一種方法,不是需要的步驟。
只有當聯表查詢不能用的時候,必須使用報錯注入或盲注的時候,才會必須使用and和or。
有時候程序過濾and和or的時候不是置空 而是用空格代替的話,我們上面的方法就不適用了。
這個時候可以使用&&代替and 使用||代替or。
直接使用||是沒有問題的,但是&&需要使用url編碼為%26%26 ,因為&在url中往往后面接參數,web服務器會將&后面的當成另一個參數。
第二十五a關:
和第二十五關一樣,只不過關閉了報錯信息,是一個盲注。
第二十六關:
輸入?id=1' or '1'='1 # 發現空格和or以及#都被過濾了,繼續嘗試發現-- /*也被注釋了
注釋被過濾,可以使用閉合的方法,現在的重點是怎樣繞過空格被過濾的辦法,正常會使用/**/來替代空格,但是現在被過濾了
使用腳本測試下哪些編碼是可以使用的,
其中%a0網上說是可以替代空格的,但是我嘗試了 不行啊。。。 感覺和數據庫版本有關吧
這里可以使用通過來不是用空格的
輸入?id=0'||extractvalue(1, concat(0x5c, (database())))||'1'='1
輸入?id=0'||extractvalue(1, concat(0x5c, (select(group_concat(schema_name))from(infoorrmation_schema.schemata))))||'1'='1
值得注意的是,這里用的了information_schema數據庫名中包含了or,會被過濾,需要使用infoorrmation_schema來繞過。
第二十六a關:
和第26關一樣,只是需要將報錯注入改為盲注。