sqli-labs(十二)(and和or的過濾)


 

第二十五關:

這關是過濾了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關一樣,只是需要將報錯注入改為盲注。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM