ctf.show WEB模塊第10關是一個SQL注入漏洞, 點擊取消按鈕可以獲取原始碼, 審計代碼可以發現原始碼中存在漏洞, 推薦使用with rollup注入進行繞過, 此關卡過濾了空格,and等關鍵字
1. 過濾空格, 可以使用括號()或者注釋/**/繞過
2. 過濾and, 可以使用or來代替

進來以后是一個登錄界面, 盲猜是SQL注入漏洞

點擊取消按鈕可以獲取這一關的原始碼, 下載到本地即可

原始碼中先根據用戶名查詢用戶資訊, 用戶名通過以后, 再判斷密碼是否相同, 我們繞過用戶名的過濾條件, 在使用 with rollup注入繞過密碼
with rollup 可以對 group by 分組結果再次進行分組,并在最后添加一行資料用于展示結果( 對group by未指定的欄位進行求和匯總, 而group by指定的分組欄位則用null占位)
我們使用萬能用戶名 a'/**/or/**/true/**/# 使SQL成立繞過用戶名之后, 后臺的SQL會查詢出所有的用戶資訊, 然后依次判斷查詢處的用戶名對應的密碼和我們輸入的密碼是否相同, 這時候我們使用with rollup 對 group by 分組的結果再次進行求和統計, 由于with rollup 不會對group by 分組的欄位( password)進行統計, 所以會在回傳結果的最后一行用null來填充password, 這樣一來我們的回傳結果中就有了一個值為null的password , 只要我們登錄的時候password輸入框什么都不輸, 那我么輸入的password的值就是null, 跟查詢出的用戶密碼相同( null == null), 從而登錄成功
輸入以下payload, 即可登錄成功, 拿到flag
a'/**/or/**/true/**/group/**/by/**/password/**/with/**/rollup/**/#

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/297767.html
標籤:其他
上一篇:ctfshow-WEB-web8
