本書主要包含三部分內(nèi)容,*部分介紹了信息安全的基礎知識,包括堆;A、匯編語言、PE文件格式、信息安全專業(yè)必知必會的基礎工具OllyDBG和IDA Pro等;第二部分通過部分簡單案例深入淺出的介紹了漏洞利用及漏洞挖掘的原理,旨在讓讀者能直觀的認識漏洞的危害性,了解漏洞挖掘的基本思想和流程;第三部分則針對滲透測試及WEB應用安全進行了詳細講解,包括滲透測試框架Metasploit、針對Window XP系統(tǒng)的掃描和滲透、WEB應用開發(fā)原理、WEB應用的安全威脅、針對WEB的滲透攻擊等,其中,基于WEB的滲透測試對很多讀者而言很容易上手實踐,通過跟隨本書的案例可以加深對黑客攻防的認識。 本書是南開大學信息安全專業(yè)的必修課教材,建議在大二下學期使用。對于信息安全專業(yè)的學生而言,這是一本較為基礎、全面的入門級教程;對于非信息安全專業(yè)的學生,如果想了解一些軟件安全、WEB安全的知識,甚至僅僅是想知道黑客是怎么煉成的,也非常推薦來讀一讀。 。
通過本書的學習,可以掌握攻防技術基礎,具備CTF基本的素質(zhì)。首先介紹信息安全專業(yè)所需的基礎知識,包括匯編語言指令、堆棧結構、OllyDBG和IDA兩種工具的使用等;進而,通過大量的簡單案例描述漏洞的產(chǎn)生、利用的方式、挖掘的方法;然后,介紹了滲透測試的基本原理,并通過Kali、Metasploit框架針對Window XP主機的滲透過程進行了詳細描述;*后,描述了WEB應用開發(fā)的細節(jié),并詳細介紹了如何針對所開發(fā)WEB程序進行SQL注入攻擊、跨站腳本攻擊等的滲透測試過程,指出安全軟件開發(fā)的必要性。
作為南開大學信息安全專業(yè)的必修課教材,本書融合信息安全基礎、軟件安全、WEB安全、黑客攻防等內(nèi)容于一體,配合大量豐富的入手級案例(有配套的視頻教程),可以激發(fā)信息安全專業(yè)學生的興趣,是一本全面、基礎的入門級教程。對于非信息安全專業(yè)的學生,如果僅僅是想知道互聯(lián)網(wǎng)為什么不安全、黑客是怎么煉成的,也非常推薦來讀一讀。
前言
當今人們已經(jīng)身處互聯(lián)網(wǎng)時代,在黑客入侵、隱私數(shù)據(jù)泄露、網(wǎng)絡詐騙等各類安全事件頻發(fā)之中,人們只知道所處的網(wǎng)絡不安全、使用的軟件有危險、黑客容易入侵,但是卻不知道這些安全事件發(fā)生的真正原因。
寫這本書的目的就在于: 一方面,期望為信息安全專業(yè)的學生提供全面、概括的入門級教程,培養(yǎng)其信息安全攻防的興趣; 另一方面,希望為那些對信息安全、黑客攻防感興趣的計算機或軟件專業(yè)的學生,融合軟件安全、Web安全和黑客攻防多維知識,提供一些解答。
如果想知道系統(tǒng)為什么不安全、黑客為什么輕松就可以入侵的原因,只需要通過本書讀懂漏洞的概念、知道漏洞的危害性即可。如果想知道黑客如何進行攻擊,可以通過本書讀懂滲透測試,動手實踐針對Web網(wǎng)站的SQL注入等攻擊。如果想知道漏洞產(chǎn)生的根本原因,并且渴望知道如何讓這個網(wǎng)絡時代的系統(tǒng)、軟件、網(wǎng)站更加安全,那么恭喜你,你已經(jīng)了解了本書編寫的初衷和內(nèi)容精髓,那就是如何編寫安全的代碼。代碼審計和必要的滲透測試才會確保發(fā)布的軟件系統(tǒng)、編寫的網(wǎng)站程序漏洞盡可能減少,讓互聯(lián)網(wǎng)時代中黑客可利用的資源盡可能耗盡。
本教材由劉哲理(南開大學)、李進(廣州大學)共同編寫完成,由賈春福(南開大學)教授對知識點和內(nèi)容進行了摘選和校正。在編寫過程中采用編者長期使用的講稿,并參考了相關書籍和網(wǎng)絡資料,在此對相關作者表示誠摯的謝意。由于編者水平有限,書中難免存在疏漏,敬請同行專家批評指正。
本教材第1版于2017年3月出版,得到廣大讀者喜愛,很快銷售一空。筆者在實際授課過程中,進一步考慮到高校培養(yǎng)CTF人才需要,結合授課時的實際體會,在現(xiàn)有教材基礎上進一步細分了知識點,增加了匯編基礎、尋址方式、返回導向編程ROP技術、SQL盲注、文件包含漏洞、反序列化漏洞以及整站攻擊示例等內(nèi)容,使得教材內(nèi)容更加飽滿,體系更加完整,作為一本網(wǎng)絡安全攻防入門教材是很不錯的。
劉哲理
2019年4月
目錄
第1章緒論
1.1病毒和木馬
1.1.1病毒
1.1.2蠕蟲
1.1.3木馬
1.2漏洞危害
1.3滲透測試
1.4實驗環(huán)境
1.4.1VMware Workstation的使用
1.4.2認識Kali
第2章基礎知識
2.1堆;A
2.1.1內(nèi)存區(qū)域
2.1.2堆區(qū)和棧區(qū)
2.1.3函數(shù)調(diào)用
2.1.4常見寄存器與棧幀
2.2匯編語言
2.2.1主要寄存器
2.2.2尋址方式
2.2.3主要指令
2.2.4函數(shù)調(diào)用匯編示例
2.3二進制文件
2.3.1PE文件格式
2.3.2虛擬內(nèi)存
2.3.3PE文件與虛擬內(nèi)存的映射
2.4調(diào)試工具
2.4.1OllyDBG
2.4.2IDA
2.4.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.2NVD
3.3.3CNNVD
3.3.4CNVD
3.3.5BugTraq
3.3.6其他漏洞庫
3.4第一個漏洞
3.4.1漏洞示例
3.4.2漏洞利用示例
目錄
第4章常見漏洞
4.1緩沖區(qū)溢出漏洞
4.1.1基本概念
4.1.2棧溢出漏洞
4.1.3其他溢出漏洞
4.2格式化字符串漏洞
4.3整數(shù)溢出漏洞
第5章漏洞利用
5.1漏洞利用概念
5.1.1有關概念
5.1.2示例
5.1.3Shellcode編寫
5.2軟件防護技術
5.2.1ASLR
5.2.2GS Stack protection
5.2.3DEP
5.2.4SafeSEH
5.2.5SEHOP
5.3漏洞利用技術
5.3.1地址利用技術
5.3.2繞過DEP保護
第6章漏洞挖掘
6.1靜態(tài)檢測
6.1.1靜態(tài)檢測方法
6.1.2靜態(tài)安全檢測技術的應用
6.1.3靜態(tài)安全檢測技術的實踐
6.2動態(tài)檢測
6.2.1模糊測試
6.2.2智能模糊測試
6.2.3動態(tài)污點分析
6.2.4動態(tài)檢測實踐
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協(xié)議
9.1.2HTML
9.1.3JavaScript
9.1.4HTTP會話管理
9.2Web編程環(huán)境安裝
9.2.1環(huán)境安裝
9.2.2JavaScript實踐
9.3PHP與數(shù)據(jù)庫編程
9.3.1PHP語言
9.3.2第一個Web程序
9.3.3連接數(shù)據(jù)庫
9.3.4查詢數(shù)據(jù)
9.3.5一個完整的示例
9.3.6Cookie實踐
9.4Web安全威脅
第10章Web滲透實戰(zhàn)基礎
10.1文件上傳漏洞
10.1.1WebShell
10.1.2文件上傳漏洞
10.2跨站腳本攻擊
10.2.1腳本的含義
10.2.2跨站腳本的含義
10.2.3跨站腳本攻擊的危害
10.3SQL注入漏洞
10.3.1SQL語法
10.3.2注入原理
10.3.3尋找注入點
10.3.4SQLMap
10.3.5SQL注入實踐
10.3.6SQL注入盲注
10.3.7SQL注入防御措施
第11章Web滲透實戰(zhàn)進階
11.1文件包含漏洞
11.1.1文件包含
11.1.2本地文件包含漏洞
11.1.3遠程文件包含漏洞
11.1.4PHP偽協(xié)議
11.2反序列化漏洞
11.2.1序列化與反序列化
11.2.2PHP魔術方法
11.2.3PHP反序列化漏洞
11.3整站攻擊案例
第12章軟件安全開發(fā)
12.1軟件開發(fā)生命周期
12.1.1軟件開發(fā)生命周期
12.1.2軟件開發(fā)生命周期模型
12.2軟件安全開發(fā)
12.2.1建立安全威脅模型
12.2.2安全設計
12.2.3安全編程
12.2.4安全測試
12.3軟件安全開發(fā)生命周期
樣題
參考文獻