本書主要包含三部分內容: *部分介紹信息安全的基礎知識,包括堆棧基礎、匯編語言、PE文件格式、信息安全專業必知必會的基礎工具OllyDBG和IDA Pro等; 第二部分通過部分簡單案例深入淺出地介紹漏洞利用及漏洞挖掘的原理,旨在讓讀者能直觀地認識漏洞的危害性,了解漏洞挖掘的基本思想和流程; 第三部分則針對滲透測試及Web應用安全進行詳細講解,包括滲透測試框架Metasploit、針對Window XP系統的掃描和滲透、Web應用開發原理、Web應用的安全威脅、針對Web的滲透攻擊等,其中基于Web的滲透測試對很多讀者而言很容易上手實踐,通過跟隨本書的案例可以加深對黑客攻防的認識。
本書是南開大學信息安全專業的必修課教材,建議在大二下學期使用。對于信息安全專業的學生而言,這是一本較為基礎、全面的入門級教程; 對于非信息安全專業的學生,如果想了解一些軟件安全、Web安全的知識,甚至僅僅是想知道黑客是怎么煉成的,也非常值得推薦來讀一讀。
目前網絡入侵事件頻頻發生,國內大量服務器被黑客控制,成為危害網絡安全的一大隱患,而入侵的一個主要手段就是漏洞利用。因此,在信息安全專業中教授漏洞利用、滲透測試的知識是必需和必要的。本書作為南開大學信息安全專業的必修課教材,將側重信息安全基礎工具的使用、漏洞利用原理、滲透測試(特別是Web滲透測試)知識的講授,配備大量容易部署運行的測試案例,以提高教學效果。書本主要適用于信息安全專業的學生使用,也可以作為計算機專業學生自學的選用教材。
前言
前言當今我們已經處在互聯網時代,黑客入侵、隱私數據泄露、網絡詐騙等各類安全事件頻發之中,人們只知道所處的網絡不安全、使用的軟件有危險、黑客容易入侵,但是卻不知道這些安全事件發生的真正原因。寫這本書的目的就源于此。一方面,期望為信息安全專業的學生提供全面、概括的入門級教程,培養其信息安全攻防的興趣; 另一方面,希望為那些對信息安全、黑客攻防感興趣的計算機或軟件專業的學生,融合軟件安全、Web安全和黑客攻防多維知識,提供一些概況性解答。如果想知道系統為什么不安全、黑客輕松就可以入侵的原因,只需要通過本書讀懂漏洞的概念、知道漏洞的危害性即可。如果想知道黑客如何進行攻擊,可以通過本書讀懂滲透測試,動手實踐針對Web網站的SQL注入等攻擊。如果想知道漏洞產生的根本原因,并且渴望知道如何讓這個網絡時代的系統、軟件、網站更加安全,那么恭喜你,你已經了解了本書編寫的初衷和精髓,那就是如何編寫安全的代碼。代碼審計、必要的滲透測試,才會確保發布的軟件系統、編寫的網站程序漏洞盡可能減少,讓互聯網時代里黑客可利用的資源盡可能耗盡。本教材由劉哲理(南開大學)、李進(廣州大學)共同編寫完成,由賈春福(南開大學)教授對知識點和內容進行了摘選和校正。在編寫過程中采用編者長期使用的講稿,并參考了相關書籍和網絡資料,在此對相關作者表示誠摯的謝意。由于編者水平有限,書中難免存在疏漏,敬請同行專家批評指正。劉哲理20161001
目錄
第1章緒論
1.1病毒和木馬
1.1.1病毒
1.1.2蠕蟲
1.1.3木馬
1.2漏洞危害
1.2.1生活中的安全問題
1.2.2漏洞產業鏈
1.2.3漏洞產生的原因
1.2.4軟件安全的維護
1.3滲透測試
1.3.1滲透測試方法分類
1.3.2滲透測試目標分類
1.4實驗環境
1.4.1VMware Workstation的使用
1.4.2認識Kali
第2章基礎知識
2.1堆;A
2.1.1內存區域
2.1.2函數調用
2.1.3寄存器與棧幀
2.1.4匯編語言
2.2二進制文件
2.2.1PE文件格式
2.2.2虛擬內存
2.2.3PE文件與虛擬內存的映射
2.3調試工具
2.3.1OllyDBG
2.3.2IDA
2.3.3OllyDBG示例
第3章漏洞概念
3.1概念及特點
3.1.1概念
3.1.2特點
3.2漏洞分類
3.2.1漏洞分類
3.2.2危險等級劃分
漏洞利用及滲透測試基礎
目錄
3.3漏洞庫
3.3.1CVE
3.3.2BugTraq
3.3.3NVD
3.3.4CNNVD
3.3.5CNVD
3.3.6其他漏洞庫
3.4第一個漏洞
第4章常見漏洞
4.1緩沖區溢出漏洞
4.1.1基本概念
4.1.2棧溢出漏洞
4.1.3其他溢出漏洞
4.2格式化字符串漏洞
4.3整數溢出漏洞
4.4SQL注入漏洞
第5章漏洞利用
5.1漏洞利用概念
5.1.1有關概念
5.1.2示例
5.1.3Shellcode編寫
5.2漏洞利用技術
5.2.1靜態Shellcode地址
5.2.2動態變化的Shellcode地址
5.2.3Heap Spray技術
5.3軟件防護技術
5.3.1GS Stack Protection
5.3.2DEP
5.3.3ASLR
5.3.4SafeSEH
5.3.5SEHOP
第6章漏洞挖掘
6.1靜態檢測
6.1.1源代碼的檢測
6.1.2可執行代碼檢測
6.1.3靜態檢測實踐
6.2動態檢測
6.2.1模糊測試
6.2.2智能模糊測試
6.2.3動態污點分析
6.2.4動態檢測實踐
6.3動靜結合檢測
第7章滲透測試基礎
7.1滲透測試過程
7.2Kali Linux基礎
7.2.1常用指令
7.2.2軟件包管理
7.3滲透測試框架
7.3.1認識Metasploit
7.3.2常用命令
第8章滲透測試實踐
8.1信息收集
8.1.1被動信息收集
8.1.2主動信息收集
8.2掃描
8.2.1Nessus準備
8.2.2Nessus掃描
8.3漏洞利用
8.4后滲透攻擊
8.4.1挖掘用戶名和密碼
8.4.2獲取控制權
第9章Web安全基礎
9.1基礎知識
9.1.1HTTP協議
9.1.2HTML
9.1.3JavaScript
9.1.4HTTP會話管理
9.2Web編程環境安裝
9.2.1環境安裝
9.2.2JavaScript實踐
9.3PHP與數據庫編程
9.3.1PHP語言
9.3.2第一個Web程序
9.3.3連接數據庫
9.3.4查詢數據
9.3.5一個完整的示例
9.3.6Cookie實踐
9.4Web安全威脅
第10章Web滲透實踐
10.1文件上傳漏洞
10.1.1WebShell
10.1.2文件上傳漏洞
10.2SQL注入漏洞
10.2.1SQL語法
10.2.2注入原理
10.2.3尋找注入點
10.2.4SQLMap
10.2.5SQL注入實踐
10.3跨站腳本攻擊
10.3.1腳本的含義
10.3.2跨站腳本的含義
10.3.3跨站腳本攻擊的危害
10.4整站攻擊案例
第11章軟件安全開發
11.1軟件開發生命周期
11.1.1軟件開發生命周期
11.1.2軟件開發生命周期模型
11.2軟件安全開發
11.2.1建立安全威脅模型
11.2.2安全設計
11.2.3安全編程
11.2.4安全測試
11.3軟件安全開發生命周期
樣題
參考文獻