• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    ASP程序密碼驗證漏洞

    發布: 2007-7-02 21:50 | 作者: admin | 來源: | 查看: 20次 | 進入軟件測試論壇討論

    領測軟件測試網

    受影響的系統:Microsoft NT+IIS
    不受影響的版本: 未知
    遠程: YES / 本地:YES
    內容摘要:
    這是國內一大學生發現的一個在NT+sql上的ASP程序密碼驗證漏洞:
    很早就發現很多國內程序員對密碼驗證不注意,今天去了陳水扁()的網沾,隨手一試,居然發現有這種漏洞,真是讓人笑破肚皮!
    原理:
    很多網站把密碼放到數據庫中,在登陸驗證中用以下sql,(以asp為例)
    sql="select * from user where username=@#"&username&"@#and pass=@#"& pass&@#"
    此時,您只要根據sql構造一個特殊的用戶名和密碼,如:ben@# or @#1@#=@#1
    hehe ...是不是進去了??

    漏洞的利用:
    sql="select * from user where username=@#"&username&"@#and pass=@#"& pass&@#"
    此時,您只要根據sql構造一個特殊的用戶名和密碼,如:ben@# or @#1@#=@#1
    這樣,程序將會變成這樣: sql="select*from user where username="&ben@#or@#1@#=1&"and pass="&pass&"
    學過編程的應該知道: or 是一個邏輯運算符,作用是在判斷兩個條件的時候,只要其中一個條件成立,那么等式將會成立.而在語言中,是以1來代表真的(成立).那么在這行語句中,原語句的"and"驗證將不再繼續,而因為"1=1"和"or"令語句返回為真值.
    解決方案:
    由漏洞的發現者提供的解決方法:
    比較好的應該按照以下方式:
    1、處理輸入字符,
    2、處理‘,|等字符
    3、select * from user where user=’ " & User & "@# "
    4、如果返回不為假,則取密碼
    pass=rs("passwd")
    5、判斷:if pass=password
    6、得出結論。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>