本篇為SQLI-labs的Write-Up的第二部分
包含Level 23- Level 27
Level 23 過濾注釋符 字符'注入
拼接語句發現注釋符沒有生效 應該是被過濾了
那只能通過拼接語句來除去后面的影響
拼接
?id=1' or '1'='1
?id=1%27%20or%20%271%27=%271
源碼中最后的'導致語句閉合?
Level 24 字符'二次注入
成功登錄后可以進行密碼重置
本次涉及二次注入? 即語句存儲在數據庫中,當調用時發揮作用
首先創建一個新用戶
密碼為123
再創建一個用戶abc'#
密碼為666
修改abc'#用戶的密碼為999
發現abc'#用戶密碼沒有被修改為999
而是abc用戶的密碼被修改為了999
這個注入利用了修改密碼時 帶入代碼的用戶名沒有進行轉義
通過abc'#閉合用戶名為abc
導致能夠越權修改abc的密碼
Level 25 Or/And過濾 拼接繞過注入
本層過濾了or and等邏輯符號
繞過:利用過濾代碼沒有二次驗證的缺陷 通過oorr? ?過濾了一個or后 剩下的拼接起來仍然為or
?id=1%27oorr%20%271%27=%271
Level?26 過濾空格繞過 括號繞過注入
第二十六關將邏輯運算符,注釋符以及空格給過濾了
使用括號過濾空格
?id=1%27||(updatexml(1,concat(0x7e,(select(database()))),1))||%27
Level 27 Union/Select過濾 拼接繞過注入
27關過濾了union 和 select
沒關系 我們使用拼接過濾
?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(group_concat(table_name))from(information_schema.tables)where(table_schema='security'))),1))or'
selselecselecttect 過濾兩次得到select