利用網線將兩臺電腦鏈接起來,每臺電腦均使用Kali虛擬機做爲攻防環境,其中攻擊方IP:192.168.1.40,防守方:192.168.1.20,攻擊方經過nmap工具探測防守方,防守方利用tcpdump工具與Wireshark工具經過抓包分析對方攻擊目的。linux
首先,防守方使用tcpdump抓包:shell
而後,攻擊方使用nmap進行探測:bash
最後針對抓到的數據包利用Wireshark進行分析,以下:網絡
能夠看到,此處抓取了大量tcp包,而且是針對不一樣端口,於是能夠分析出攻擊方正在進行tcp端口掃描。dom
此圖顯示抓取到了大量udp包,說明攻擊方正在進行udp端口掃描。tcp
主要經過實驗樓緩衝區溢出漏洞試驗課程,學習如何利用緩衝區溢出漏洞進行攻擊。工具
緩衝區溢出是指程序試圖向緩衝區寫入超出預分配固定長度數據的狀況。這一漏洞能夠被惡意用戶利用來改變程序的流控制,甚至執行代碼的任意片斷。這一漏洞的出現是因爲數據緩衝器和返回地址的暫時關閉,溢出會引發返回地址被重寫。學習
實驗環境爲實驗樓提供的虛擬操做系統。spa
因爲是實驗需在32位環境下操做,故首先使用如下命令安裝相關環境:操作系統
sudo apt-get update sudo apt-get install lib32z1 libc6-dev-i386 sudo apt-get install lib32readline-gplv2-dev
安裝完畢後,輸入linux32
與/bin/bash
,進入32位linux環境,因爲猜想內存地址是緩衝區溢出攻擊的關鍵,因此首先使用如下命令:
sudo sysctl -w kernel.randomize_va_space=0
關閉系統內存地址空間隨機化功能,以方便猜想內存地址。
因爲許多shell程序在被調用時會自動放棄他們的特權,於是須要使用另外一個shell(zsh)來代替/bin/bash:
這裏使用一個精心設計的shellcode使得緩衝溢出後,跳轉到指定位置:
實際使用的是其彙編版本:
編寫一個stack.c文件,內容以下:
編譯該程序,其中,用 –fno-stack-protector 關閉棧保護機制,用-z execstack 用於容許執行棧,並更改權限:
編寫攻擊代碼exploit.c,內容以下:
其中「\x??\x??\x??\x??」處須要添上shellcode保存在內存中的地址,下面查看該地址:
在0x080484f8處設定斷點,並運行:
shellcode地址爲 0xffffd020 + 100 = 0xffffd084
而後編譯:
先運行攻擊程序exploit,再運行漏洞程序stack:
可看到,攻擊成功,得到root權限。
通過本週的學習,瞭解了緩衝區溢出攻擊的簡單實現方法,想要靈活使用,仍是須要多多實踐。
完成網絡攻防課程的學習,完成各類攻防實踐操做。
學習了實驗樓緩衝區溢出漏洞課程,基本完成實驗。
周次 | 教材學習 | 視頻學習(新增/累計) | 博客(新增/累計) |
---|---|---|---|
第1周 | (實驗樓學習) | (實驗樓學習) | 1/1 |
第2周 | 第一、2章 | 5/5 | 1/2 |
第3周 | 第3章 | 5/10 | 2/4 |
第4周 | 第4章 | 5/15 | 1/5 |
第5周 | 第十一、12章 | 5/20 | 1/6 |
第6周 | 第五、6章 | 5/25 | 1/7 |
第7周 | 第7章 | 5/30 | 1/8 |
第8周 | 第8章 | 5/35 | 1/9 |
第9周 | 第九、10章 | 3/38 | 1/10 |
第10周 | (實驗樓學習) | (實驗樓學習) | 1/11 |