新聞中心
最近測試發(fā)現(xiàn)一個(gè)登錄處的SQL注入,不用密碼即可登錄系統(tǒng)。
首先在登錄處輸入“111'”,出現(xiàn)報(bào)錯(cuò)頁面如圖:判斷可能存在注入
進(jìn)一步利用萬能用戶名測試admin' or '1'='1,不用輸密碼成功登錄。
分析一下這個(gè)payload:
從報(bào)錯(cuò)信息可以看出查詢語句是:
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),郊區(qū)企業(yè)網(wǎng)站建設(shè),郊區(qū)品牌網(wǎng)站建設(shè),網(wǎng)站定制,郊區(qū)網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,郊區(qū)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
select * from xxxx where username=' ' and pwd=' '
當(dāng)我們輸入payload之后就變成如下:
select * from xxxx where username=' admin' or '1'='1' and pwd=' '
這個(gè)查詢語句執(zhí)行之后的結(jié)果就是:username='admin' 是true(系統(tǒng)存在這個(gè)用戶名),'1'='1'是true(后面發(fā)現(xiàn)這里是否為true也不重要),pwd=''是false。
true or true and false,由于and的優(yōu)先級高于or,先運(yùn)算true and false結(jié)果是false,再運(yùn)算true or false結(jié)果是true(or運(yùn)算:所有參數(shù)中的任意一個(gè)邏輯值為真時(shí)即返回TRUE(真))所以登錄成功。
然后我利用sqlmap跑了一下,發(fā)現(xiàn)必須把a(bǔ)dmin加上才能成功,如果不加是跑不出來的,如圖:
感覺這樣的話,需要知道一個(gè)正確得用戶名才行,還是有一定得局限性,我利用別的萬能賬戶都不行,比如'or '1'='1--直接提示用戶名密碼錯(cuò)誤,'or '1'='1'--又會出現(xiàn)錯(cuò)誤信息。
之前也有遇到注入的參數(shù)必須有值才可以進(jìn)行注入想必和頁面返回有關(guān)系?
標(biāo)題名稱:SQL注入繞過登錄驗(yàn)證
網(wǎng)頁URL:http://www.dlmjj.cn/article/joiicd.html