您好,登錄后才能下訂單哦!
最近測試發現一個登錄處的SQL注入,不用密碼即可登錄系統。
首先在登錄處輸入“111'”,出現報錯頁面如圖:判斷可能存在注入
進一步利用萬能用戶名測試admin' or '1'='1,不用輸密碼成功登錄。
分析一下這個payload:
從報錯信息可以看出查詢語句是:
select * from xxxx where username=' ' and pwd=' '
當我們輸入payload之后就變成如下:
select * from xxxx where username=' admin' or '1'='1' and pwd=' '
這個查詢語句執行之后的結果就是:username='admin' 是true(系統存在這個用戶名),'1'='1'是true(后面發現這里是否為true也不重要),pwd=''是false。
true or true and false,由于and的優先級高于or,先運算true and false結果是false,再運算true or false結果是true(or運算:所有參數中的任意一個邏輯值為真時即返回TRUE(真))所以登錄成功。
然后我利用sqlmap跑了一下,發現必須把admin加上才能成功,如果不加是跑不出來的,如圖:
感覺這樣的話,需要知道一個正確得用戶名才行,還是有一定得局限性,我利用別的萬能賬戶都不行,比如'or '1'='1--直接提示用戶名密碼錯誤,'or '1'='1'--又會出現錯誤信息。
之前也有遇到注入的參數必須有值才可以進行注入想必和頁面返回有關系?
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。