日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2017-2018-2 20179302《网络攻防》第十一周作业

發(fā)布時間:2024/4/13 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2017-2018-2 20179302《网络攻防》第十一周作业 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

研究緩沖區(qū)溢出的原理,至少針對兩種數(shù)據(jù)庫進行差異化研究

緩沖區(qū)溢出是指當(dāng)計算機向緩沖區(qū)內(nèi)填充數(shù)據(jù)位數(shù)時,超過了緩沖區(qū)本身的容量,溢出的數(shù)據(jù)覆蓋在合法數(shù)據(jù)上,理想的情況是程序檢查數(shù)據(jù)長度并不允許輸入超過緩沖區(qū)長度的字符,但是絕大多數(shù)程序都會假設(shè)數(shù)據(jù)長度總是與所分配的儲存空間相匹配,這就為緩沖區(qū)溢出埋下隱患。操作系統(tǒng)所使用的緩沖區(qū) 又被稱為"堆棧"。在各個操作進程之間,指令會被臨時儲存在"堆棧"當(dāng)中,"堆棧"也會出現(xiàn)緩沖區(qū)溢出。

原理

緩沖區(qū)溢出(Buffer Overflow)是計算機安全領(lǐng)域內(nèi)既經(jīng)典而又古老的話題。隨著計算機系統(tǒng)安全性的加強,傳統(tǒng)的緩沖區(qū)溢出攻擊方式可能變得不再奏效,相應(yīng)的介紹緩沖區(qū)溢出原理的資料也變得“大眾化”起來。其中看雪的《0day安全:軟件漏洞分析技術(shù)》一書將緩沖區(qū)溢出攻擊的原理闡述得簡潔明了。本文參考該書對緩沖區(qū)溢出原理的講解,并結(jié)合實際的代碼實例進行驗證。不過即便如此,完成一個簡單的溢出代碼也需要解決很多書中無法涉及的問題,尤其是面對較新的具有安全特性的編譯器——比如MS的Visual Studio2010。
在計算機內(nèi)部,輸入數(shù)據(jù)通常被存放在一個臨時空間內(nèi),這個臨時存放的空間就被稱為緩沖區(qū),緩沖區(qū)的長度事先已經(jīng)被程序或者操作系統(tǒng)定義好了。向緩沖區(qū)內(nèi)填充數(shù)據(jù),如果數(shù)據(jù)的長度很長,超過了緩沖區(qū)本身的容量,那么數(shù)據(jù)就會溢出存儲空間,而這些溢出的數(shù)據(jù)還會覆蓋在合法的數(shù)據(jù)上,這就是緩沖區(qū)和緩沖區(qū)溢出的道理。

oracle數(shù)據(jù)庫

Oracle數(shù)據(jù)庫系統(tǒng)是目前世界上應(yīng)用最廣泛的數(shù)據(jù)庫之一,在數(shù)據(jù)庫市場上占有主要份額。鑒于Oracle數(shù)據(jù)庫系統(tǒng)在實際應(yīng)用中舉足輕重的地位,其安全問題的研究就顯得尤為重要。緩沖區(qū)溢出是一種在各種操作系統(tǒng)應(yīng)用軟件中廣泛存在且十分危險的漏洞,利用緩沖區(qū)溢出漏洞攻擊可以導(dǎo)致程序運行失敗,甚至系統(tǒng)崩潰等嚴重后果,它代表了一類極其嚴重而且常見的安全威脅。Oracle數(shù)據(jù)庫系統(tǒng)中出現(xiàn)的緩沖區(qū)溢出漏洞,給計算機網(wǎng)絡(luò)帶來了嚴重的危害。如何有效地消除基于緩沖區(qū)溢出漏洞的攻擊,就成為大家關(guān)注的一個焦點。基于緩沖區(qū)溢出漏洞的攻擊,一般采取如下步驟:首先編寫相關(guān)程序使緩沖區(qū)發(fā)生溢出,然后尋找溢出點,最后在溢出點注入惡意代碼。其中,尋找溢出點、編寫惡意代碼是完成攻擊的基礎(chǔ),而跳轉(zhuǎn)到溢出點注入惡意代碼則是攻擊的重難點。

Oracle數(shù)據(jù)庫產(chǎn)品具有以下優(yōu)良特性

兼容性:Oracle產(chǎn)品采用標準SQL,并經(jīng)過美國國家標準技術(shù)所(NIST)測試。與IBM SQL/DS、DB2、INGRES、IDMS/R等兼容。
可移植性:Oracle的產(chǎn)品可運行于很寬范圍的硬件與操作系統(tǒng)平臺上。可以安裝在70種以上不同的大、中、小型機上;可在VMS、DOS、UNIX、Windows等多種操作系統(tǒng)下工作。
可聯(lián)結(jié)性:Oracle能與多種通訊網(wǎng)絡(luò)相連,支持各種協(xié)議(TCP/IP、DECnet、LU6.2等)。
高生產(chǎn)率:Oracle產(chǎn)品提供了多種開發(fā)工具,能極大地方便用戶進行進一步的開發(fā)。
開放性:Oracle良好的兼容性、可移植性、可連接性和高生產(chǎn)率使Oracle RDBMS具有良好的開放性。

mysql數(shù)據(jù)庫

MySQL是一款開放源代碼關(guān)系型數(shù)據(jù)庫系統(tǒng)。
MySQL包含的mysql_real_connect()函數(shù)不充分檢查用戶提供的參數(shù)值,本地或遠程攻擊者可以利用這個漏洞進行緩沖區(qū)溢出攻擊,可能用來破壞數(shù)據(jù)庫或執(zhí)行任意指令。
攻擊者可以利用SQL注入攻擊,或者可上傳惡意腳本到服務(wù)器上,通過傳遞超長的字符串作為mysql_real_connect()函數(shù)參數(shù),可觸發(fā)溢出,精心構(gòu)建提交數(shù)據(jù)可能以數(shù)據(jù)庫進程權(quán)限在系統(tǒng)上執(zhí)行任意指令。

針對不同數(shù)據(jù)類型,研究SQL注入點的發(fā)現(xiàn)與注入技術(shù)

SQL 注入原理

SQL 注入指黑客利用一些Web應(yīng)用程序(如:網(wǎng)站、論壇、留言本、文章發(fā)布系統(tǒng)等)中某些存在不安全代碼或SQL語句不縝密的頁面,精心構(gòu)造SQL語句,把非法的SQL語句指令轉(zhuǎn)譯到系統(tǒng)實際SQL語句中并執(zhí)行它,以獲取用戶名、口令等敏感信息,從而達到控制主機服務(wù)器的攻擊方法。 SQL 注入漏洞是發(fā)生于應(yīng)用程序與數(shù)據(jù)庫層的安全漏洞。簡而言之,是在輸入的字符串之中注入SQL指令,在設(shè)計不良的程序當(dāng)中忽略了檢查,那么這些注入進去的指令就會被數(shù)據(jù)庫服務(wù)器誤認為是正常的 SQL 指令而運行,因此遭到破壞或是入侵。

SQL 注入分類

按照注入點類型來分類

數(shù)字型注入點:在 Web 端大概是?http://xxx.com/news.php?id=1?這種形式,其注入點 id 類型為數(shù)字,所以叫數(shù)字型注入點。這一類的 SQL 語句原型大概為 select * from 表名 where id=1。
字符型注入點:在 Web 端大概是?http://xxx.com/news.php?name=admin?這種形式,其注入點 name 類型為字符類型,所以叫字符型注入點。這一類的 SQL 語句原型大概為 select * from 表名 where name='admin'。注意多了引號。
搜索型注入點:這是一類特殊的注入類型。這類注入主要是指在進行數(shù)據(jù)搜索時沒過濾搜索參數(shù),一般在鏈接地址中有“keyword=關(guān)鍵字”,有的不顯示在的鏈接地址里面,而是直接通過搜索框表單提交。 此類注入點提交的 SQL 語句,其原形大致為:select * from 表名 where 字段 like '%關(guān)鍵字%'。

研究緩沖區(qū)溢出的防范方法,至少針對兩種編程語言進行差異化研究

防范方法

目前有四種基本的方法保護緩沖區(qū)免受緩沖區(qū)溢出的攻擊和影響:

  • 強制寫正確的代碼的方法
    編寫正確的代碼是一件非常有意義但耗時的工作,特別像編寫C語言那種具有容易出錯傾向的程序(如:字符串的零結(jié)尾),這種風(fēng)格是由于追求性能而忽視正確性的傳統(tǒng)引起的。盡管花了很長的時間使得人們知道了如何編寫安全的程序,具有安全漏洞的程序依舊出現(xiàn)。因此人們開發(fā)了一些工具和技術(shù)來幫助經(jīng)驗不足的程序員編寫安全正確的程序。雖然這些工具幫助程序員開發(fā)更安全的程序,但是由于C語言的特點,這些工具不可能找出所有的緩沖區(qū)溢出漏洞。所以,偵錯技術(shù)只能用來減少緩沖區(qū)溢出的可能,并不能完全地消除它的存在。除非程序員能保證他的程序萬無一失,否則還是要用到以下部分的內(nèi)容來保證程序的可靠性能。
  • 通過操作系統(tǒng)使得緩沖區(qū)不可執(zhí)行,從而阻止攻擊者殖入攻擊代碼
    這種方法有效地阻止了很多緩沖區(qū)溢出的攻擊,但是攻擊者并不一定要殖入攻擊代碼來實現(xiàn)緩沖區(qū)溢出的攻擊,所以這種方法還是存在很多弱點的。
  • 利用編譯器的邊界檢查來實現(xiàn)緩沖區(qū)的保護
    這個方法使得緩沖區(qū)溢出不可能出現(xiàn),從而完全消除了緩沖區(qū)溢出的威脅,但是相對而言代價比較大。
  • 在程序指針失效前進行完整性檢查
    這樣雖然這種方法不能使得所有的緩沖區(qū)溢出失效,但它的確確阻止了絕大多數(shù)的緩沖區(qū)溢出攻擊,而能夠逃脫這種方法保護的緩沖區(qū)溢出也很難實現(xiàn)。

最普通的緩沖區(qū)溢出形式是攻擊活動紀錄然后在堆棧中殖入代碼。這種類型的攻擊在1996年中有很多紀錄。而非執(zhí)行堆棧和堆棧保護的方法都可以有效防衛(wèi)這種攻擊。非執(zhí)行堆棧可以防衛(wèi)所有把代碼殖入堆棧的攻擊方法,堆棧保護可以防衛(wèi)所有改變活動紀錄的方法。這兩種方法相互兼容,可以同時防衛(wèi)多種可能的攻擊。
剩下的攻擊基本上可以用指針保護的方法來防衛(wèi),但是在某些特殊的場合需要用手工來實現(xiàn)指針保護。全自動的指針保護需要對每個變量加入附加字節(jié),這樣使得指針邊界檢查在某些情況下具有優(yōu)勢。
最為有趣的是,緩沖區(qū)溢出漏洞--Morris蠕蟲使用了現(xiàn)今所有方法都無法有效防衛(wèi)的方法,但是由于過于復(fù)雜的緣故卻很少有人用到。

根據(jù)緩沖區(qū)溢出攻擊的步驟, 可將常用的緩沖區(qū)溢出攻擊檢測技術(shù)分為以下 3 種類型

  • 基于輸入字符串的檢測方法
  • 基于保護堆棧中的返回地址的檢測方法
  • 基于監(jiān)視系統(tǒng)調(diào)用的檢測方法。

    基于輸入字符串的檢測方法

    對輸入的字符串進行檢測,確定其為溢出攻擊字符串時采取阻攔措施,使攻擊者無法注入攻擊代碼。一般有以下3 種方法構(gòu)建溢出攻擊字符串
    第1種溢出攻擊字符串適用于緩沖區(qū)大于ShellCode 長度的情況;第2種溢出攻擊字符串一般用于緩沖區(qū)小于ShellCode 長度的情況;第3種方法是將ShellCode 放在環(huán)境變量里,是目前較為常用的方法。

    基于保護堆棧中返回地址的檢測方法

    緩沖區(qū)溢出攻擊最關(guān)鍵的步驟是要通過修改函數(shù)返回地址來改變程序的流程, 因此, 在函數(shù)調(diào)用返回前, 通過檢查返回地址是否被修改可以判斷是否有緩沖區(qū)溢出攻擊發(fā)生。 該檢測的實現(xiàn)可以通過在源碼中插入一些約束和判斷的模塊, 然后在編譯后的程序運行期間對有關(guān)變量和堆棧區(qū)域進行監(jiān)控,檢測是否有攻擊發(fā)生。 StackGuard 和StackShield 就是這一類型的工具,它們都是 gcc 編譯器的擴展工具,用于監(jiān)控調(diào)用的函數(shù)返回地址是否正常。

    目前有三種基本的方法保護緩沖區(qū)免受緩沖區(qū)溢出的攻擊和影響

  • 通過操作系統(tǒng)使得緩沖區(qū)不可執(zhí)行,從而阻止攻擊者植入攻擊代碼;
  • 強制寫正確的代碼的方法;
  • 利用編譯器的邊界檢查來實現(xiàn)緩沖區(qū)的保護,使得緩沖區(qū)溢出不可能出現(xiàn),從而完全消除了緩沖區(qū)溢出的威脅。

    基于監(jiān)視系統(tǒng)調(diào)用的檢測方法

    通過檢測是否有 ShellCode 運行可以檢測是否發(fā)生緩沖區(qū)溢出攻擊。攻擊者既希望 ShellCode 利用獲得的權(quán)限啟動一個交互式的 shell 進程來完成盡量多的事情,又希望 ShellCode 盡量短小從而更加隱蔽,所以絕大多數(shù) ShellCode 都會調(diào)用系統(tǒng)函數(shù)。 由于監(jiān)視所有系統(tǒng)調(diào)用會耗費大量系統(tǒng)資源, 因此只對 ShellCode 常用的系統(tǒng)調(diào)用進行監(jiān)視, 根據(jù)某些特征判斷受監(jiān)視的系統(tǒng)調(diào)用是否為非法調(diào)用就可確定被保護系統(tǒng)是否遭到緩沖區(qū)溢出攻擊。

至少使用兩種數(shù)據(jù)庫注入攻擊工具

Sqlmap

Sqlmap是一種開源的滲透測試工具,可以自動檢測和利用SQL注入漏洞以及接入該數(shù)據(jù)庫的服務(wù)器。它擁有非常強大的檢測引擎、具有多種特性的滲透測試器、通過數(shù)據(jù)庫指紋提取訪問底層文件系統(tǒng)并通過外帶連接執(zhí)行命令.

sqlmap支持的數(shù)據(jù)庫有

MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB

檢測注入

基本格式

sqlmap -u “http://www.vuln.cn/post.php?id=1″

默認使用level1檢測全部數(shù)據(jù)庫類型

sqlmap -u “http://www.vuln.cn/post.php?id=1″ –dbms mysql –level 3
指定數(shù)據(jù)庫類型為mysql,級別為3(共5級,級別越高,檢測越全面)
跟隨302跳轉(zhuǎn)
當(dāng)注入頁面錯誤的時候,自動跳轉(zhuǎn)到另一個頁面的時候需要跟隨302,
當(dāng)注入錯誤的時候,先報錯再跳轉(zhuǎn)的時候,不需要跟隨302。
目的就是:要追蹤到錯誤信息。

cookie注入

當(dāng)程序有防get注入的時候,可以使用cookie注入
sqlmap -u “http://www.baidu.com/shownews.asp” –cookie “id=11″ –level 2(只有l(wèi)evel達到2才會檢測cookie)

從post數(shù)據(jù)包中注入

可以使用burpsuite或者temperdata等工具來抓取post包
sqlmap -r “c:\tools\request.txt” -p “username” –dbms mysql 指定username參數(shù)

sqlmap詳細命令

–is-dba 當(dāng)前用戶權(quán)限(是否為root權(quán)限)
–dbs 所有數(shù)據(jù)庫
–current-db 網(wǎng)站當(dāng)前數(shù)據(jù)庫
–users 所有數(shù)據(jù)庫用戶
–current-user 當(dāng)前數(shù)據(jù)庫用戶
–random-agent 構(gòu)造隨機user-agent
–passwords 數(shù)據(jù)庫密碼
–proxy?http://local:8080?–threads 10 (可以自定義線程加速) 代理
–time-sec=TIMESEC DBMS響應(yīng)的延遲時間(默認為5秒)

sqlsus

sqlsus是使用Perl語言編寫的MySQL注入和接管工具。它可以獲取數(shù)據(jù)庫結(jié)構(gòu),實施注入查詢,下載服務(wù)器的文件,爬取可寫目錄并寫入后門,以及復(fù)制數(shù)據(jù)庫文件等功能。它提供Inband和盲注兩種注入模式,獲取數(shù)據(jù)庫權(quán)限。
使用時,用戶首先使用該工具生成一個配置文件。在配置文件中,設(shè)置注入路徑以及注入的各項參數(shù),然后再加載該文件,實施滲透測試。

轉(zhuǎn)載于:https://www.cnblogs.com/20179302yzl/p/9065267.html

總結(jié)

以上是生活随笔為你收集整理的2017-2018-2 20179302《网络攻防》第十一周作业的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。