[pwn基礎]PWN二進制漏洞學習指南
前言
最近准備學PWN,所以買了《CTF權威指南(PWN)篇》的書粗略的看完后,在這里做個學PWN需要掌握的知識指南,如有補充歡迎評論。
前置技能
首先我覺得要學習PWN還是要有一定基礎的,因為PWN畢竟是和系統底層知識打交道,所以我覺得應該具備如下的一些技能,並且我推薦了一些不錯的書籍。
- Linux系統基礎知識《鳥哥Linux私房菜》、《Linux就該這么學》、《Linux命令大全》
- Linux下C語言編程 《Linux C編程一站式學習》
- Python編程基礎知識 《Python編程:從入門到實踐》
- 匯編語言《匯編語言(第4版)》、 王爽8086匯編學習筆記
- 熟悉ELF文件格式 《Linux二進制分析 》
- 熟悉GDB動態調試 gdb調試常用指令
PWN概念
概述
PWN我覺得最開始的時候應該是沒有這門學科和系統化的資料教程的,PWN本身屬於高階技能,個人感覺都是以前那些逆向大佬、編程大佬開始玩點高級的東西,然后就開始挖漏洞,結果就挖出了各種二進制漏洞,並且把二進制漏洞也完美的利用起來了,后面就歸納總結出一套體系供后人學習,在此真的膜拜那些前輩的共享精神。
發音
至於PWN為什么叫PWN呢?是什么單詞的縮寫嗎?其實只是一種聲音,pwn!你的電腦爆炸了,你的電腦被攻破了,因為用二進制漏洞挖掘與利用這詞來形容pwn未免也太長了,所以就用了簡潔的叫法。
術語
這里介紹一些簡單的PWN術語
- Exploit(exp) 用於攻擊的腳本與方案
- Payload 攻擊載荷,是對目標進程劫持控制流的數據
- Shellcode 調用攻擊目標的shell的代碼
PWN環境搭建
學習PWN知識我們先需要一個指定的環境來進行PWN,這里首選的操作系統為Ubuntu、Kali然后安裝必要的PWN環境軟件來進行搭建,當然如果你想省力氣的話也可以用docker直接部署別人封裝好的pwn環境。
推薦教程鏈接:PWN虛擬機配置-yichen知識庫、PWN環境配置-星盟安全、PWN入門教程-環境配置、pwndocker
PWN知識學習途徑
個人覺得PWN知識的話需要掌握常見漏洞
、安全機制
、PWN技巧
。
常見漏洞
- 整數安全
- 格式化字符串
- 棧溢出與ROP
- 堆利用
安全機制
- Stack Canaries 棧保護
- No-eXecute
- ALSR 和 PIE
- FORTIFY_SOURCE
- RELRO
PWN技巧
- One-gadget
- 通用dadget及Return-to-csu
- 劫持hook函數
- 利用DynELF泄露函數地址
- SSP Leak
- 利用environ泄露棧地址
- 利用_IO_FILE結構
- 利用vsyscall
推薦的學習資料有《CTF競賽權威指南(PWN篇)》、星盟安全 PWN系列教程、Linux Pwn入門教程、yichen的信安知識庫 二進制安全、CTF中PWN知識點整理、CTF-PWN資料與資源、Nightmare 二進制課程。然后最好是跟着視頻或者書籍再找一個在線的CTF網站練習,因為只有練習多了后才能熟能生巧,才能加深各種知識的理解。
推薦的CTF平台有:BUUCTF、pwnable.tw、攻防世界、NSSCTF、pwnable.kr
PWN相關資源博客
這些是我隨便收集的排名不分先后,方便知識獲取與整理。
https://bestwing.me/ Swing'Blog 浮生若夢
https://www.jarvisw.com/ 人稱汪神 白帽子、全棧、IoT安全專家、嵌入式系統專家
http://whereisk0shl.top/ K0sh1: 就職於 360 vulcan Team ,擅長windows 漏洞挖掘與利用
https://o0xmuhe.github.io/ 三葉草Pwn選手,多個Adobe CVE編號擁有者
https://changochen.github.io/about.html Pwn神,目前在美國求學,專研學術
https://www.cnblogs.com/Ox9A82/ 三葉草Pwn選手,玄武實驗室就職,方向是Windows和瀏覽器
https://f1r.github.io/ r2kapig 成員,二進制選手
https://gloxec.github.io/ Hook iOS && Pwn選手,目前就職360
http://riusksk.me/ 泉哥,《漏洞戰爭》作者
https://firmianay.github.io/ Firmy Yang 《CTF權威指南(Pwn)篇》作者
https://roderickchan.github.io/ 群里某位二進制大佬博客
http://47.101.67.103/tags/pwn/ eeeeeeeeeeeeeeeea
https://zhouyetao.github.io 星盟團隊創始人之一
https://eur1ka.github.io/ eur1ka ,群內Pwn大佬 已刷幾百pwn題,目前研究IoT
https://vxer-lee.github.io/ 我,一個渣渣會點re,正在學pwn
Pwn菜雞小分隊
可以加群一起學習pwn技術,群內有pwn大佬(不是我),互相交流才能進步,群內也可分享re和web技術。