IDA工具獲取方式見文末
鬥哥將輸出PWN的一系列文章,手把手帶小夥伴們入坑 。
CTF的PWN題想必是很多小夥伴心裡的痛,大多小夥伴不知道PWN該如何入門,不知道該如何系統性學習,本期開始,鬥哥將輸出PWN的一系列文章,手把手帶小夥伴們入坑 。
0×01開篇介紹
PWN 是一個黑客語法的俚語詞 ,是指攻破設備或者系統 。發音類似」砰」,對黑客而言,這就是成功實施黑客攻擊的聲音–砰的一聲,被」黑」的電腦或手機就被你操縱了 。
鬥哥認為解決PWN題就是利用簡單逆向工程後得到代碼(源碼、字節碼、彙編等),分析與研究代碼最終發現漏洞,再通過二進位或系統調用等方式獲得目標主機的shell 。
0×02 解題步驟
1. 逆向工程:
逆向是PWN解題的第一步,但不是PWN題的重點。所以只要知道簡單的逆向工具的使用步驟。最終目的是得到代碼(源碼、彙編等)。
掌握工具:
IDA Pro
2. 分析代碼:
分析代碼步驟也就是漏洞挖掘,這是PWN解題最重要的一步。
對逆向工程的結果進行靜態分析或對程序進行動態調試,找出程序中存在的漏洞。大多數PWN題都存在常見的漏洞 。
掌握工具:
靜態分析:IDA Pro
動態調試:gdb(with peda or gef)、windbg、ollydbg
掌握技能:
1. C語言:變量聲明、常見函數的使用、熟悉常見漏洞函數等
2. 彙編語言:程序執行、函數棧幀、函數調用等
3.漏洞利用:
根據分析代碼步驟得出的漏洞點,使用漏洞利用方式對漏洞進行利用,編寫初步的exp。
掌握工具:
pwntools、zio
掌握技能:
1. 熟悉程序各種保護機制的繞過方式
2. 掌握ELF文件基本概念
3. 熟悉Linux系統如何加載ELF程序
4. getshell:
到了getshell步驟 ,PWN題基本已經解出來了,把我們漏洞利用步驟的exp替換成獲取系統shell的code形成最終exp,就可以拿到主機的shell權限獲取flag。
分兩種情況:
(1) 內存程序中有getshell函數或指令時,直接調用/劫持。
(2) 存程序中沒有getshell函數或指令時, 就要編寫shellcode。
getshell函數如:system(「/bin/sh」)
掌握工具:
pwntools、zio
掌握技能:
1. 系統調用方式
2. 學習shellcode基本原理
3. 學習如何編寫shellcode
4. 學習plt & got表在程序運行時的功能
0×03 常見的漏洞介紹
在分析代碼步驟時,有些漏洞是經常出現,所以我們應該事先了解常見的漏洞,這樣可以讓我們在分析代碼時事半功倍。
下面鬥哥簡單列舉一些漏洞,相關漏洞的詳細介紹可以到Wiki學習。
1. 緩衝區溢出:
緩衝區溢出包括:堆溢出、棧溢出、bss溢出、data溢出。這些溢出通常覆蓋指針,造成程序執行劫持。其中棧溢出是出題最多的一個緩衝區溢出漏洞,也是鬥哥PWN系列文章的重點。
2. 整數溢出:
整數溢出通常是指:無符號型與有符號的轉換 、整數加減乘除法。整數溢出通常會進一步轉換為緩衝區溢出、邏輯漏洞等其他漏洞。
3. 格式化字符串:
格式化字符串通常是指:程序使用printf(s),sprintf(s),fprintf(s)等函數格式字符且未作任何處理。可能導致任意地址讀寫 、洩露函數地址。
4. 邏輯漏洞:
邏輯漏洞主要形成原因是程序訪問時,或者處理數據不當而引發的漏洞。主要漏洞有訪問控制,協議漏洞,條件競爭等。
0×04 小小總結
鬥哥的這篇文章主要介紹PWN的解題步驟和每個步驟需要學習的工具與知識點,以及常見漏洞介紹,小夥伴們可以根據鬥哥列出的學習框架、解題步驟進行學習與解題。
下期鬥哥將帶來棧溢出的原理、如果遇到棧溢出的PWN題該如何利用,拿到系統shell權限獲取flag。
推薦學習網站:
https://ctf-wiki.github.io/ctf-wiki/
https://pwnable.kr/
https://www.kanxue.com/chm.htm
往期教程
CTF網絡安全大賽學習從入門到精通教程、工具、writeup合集
2018-2019安卓逆向Android安全反編譯脫殼加固IDA調試實戰培訓教程5套
【教程】升級版HCIA-Security V3.0認證課程 華為ICT領域網絡安全工程師教程
IOS逆向與安全學習視頻教程
獲取更多教程請點擊閱讀原文
回復關鍵詞:ida,獲取ida工具
回復關鍵詞:ida,獲取ida工具
回復關鍵詞:ida,獲取ida工具
掃描關注烏雲安全