SQL注入绕过登录验证
最近測試發(fā)現(xiàn)一個登錄處的SQL注入,不用密碼即可登錄系統(tǒng)。
首先在登錄處輸入“111'”,出現(xiàn)報錯頁面如圖:判斷可能存在注入
進一步利用萬能用戶名測試admin' or '1'='1,不用輸密碼成功登錄。
分析一下這個payload:
從報錯信息可以看出查詢語句是:
當(dāng)我們輸入payload之后就變成如下:
select * from xxxx where username=' admin' or '1'='1' and pwd=' '這個查詢語句執(zhí)行之后的結(jié)果就是:username='admin' 是true(系統(tǒng)存在這個用戶名),'1'='1'是true(后面發(fā)現(xiàn)這里是否為true也不重要),pwd=''是false。
true or true and false,由于and的優(yōu)先級高于or,先運算true and false結(jié)果是false,再運算true or false結(jié)果是true(or運算:所有參數(shù)中的任意一個邏輯值為真時即返回TRUE(真))所以登錄成功。
然后我利用sqlmap跑了一下,發(fā)現(xiàn)必須把admin加上才能成功,如果不加是跑不出來的,如圖:
感覺這樣的話,需要知道一個正確得用戶名才行,還是有一定得局限性,我利用別的萬能賬戶都不行,比如'or '1'='1--直接提示用戶名密碼錯誤,'or '1'='1'--又會出現(xiàn)錯誤信息。
之前也有遇到注入的參數(shù)必須有值才可以進行注入想必和頁面返回有關(guān)系?
轉(zhuǎn)載于:https://blog.51cto.com/13539934/2409532
總結(jié)
以上是生活随笔為你收集整理的SQL注入绕过登录验证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 循環map(轉)
- 下一篇: 数据库服务器 之 Postgresql备