xp0int Posted on Jan 20 2019 Pwn(二进制攻防)作为CTF比赛当中分数占比最高也是最难入门的方向,很多同学都想要系统的学习但是苦于找不到方向。 以下简单讲一讲我自己认为比较合适的学习路线。 ## 基础部分 由于Pwn涉及计算机学科体系的众多方向:包括C(C++)语言编程,计算机组成原理、操作系统、计算机网络、数据结构编译原理等,其中很多都是高年级开设的课程。对于低年级同学的建议是从实践入手,在练习做题时候运用到相关的知识的时候花少量的时间把概念弄懂,不必把整套知识吃透;在上课学习相关知识的时候结合实践的印象来深入理解,这样学习的效率最高,记忆印象也会很深刻。(Pwn选手根本不需要担心专业课挂科,比赛题目都做得出来了,考试当然不在话下)。 之前在做Pwn相关培训的时候,很多时候都是上来就直接讲汇编语言,讲栈溢出原理。这样讲下来发现很多同学其实很难理解,就算能够自己把实验复现了也不一定能够理解漏洞在现实当中的利用场景与意义。其实应该从以下一些基础话题入手: ### Linux系统基础 学习linux的方法最直接就是装上Linux系统来熟悉命令,虚拟机方式或者双系统都可以,发行版本不限,但是CTF选手一般会选择Kali或者Ubuntu。 以下提供部分学习材料: [Kali-Linux 稳中求进-i春秋](https://www.ichunqiu.com/course/58593) 书目: 《鸟哥的Linux私房菜》(http://cn.linux.vbird.org/)(同样也有纸质书版本) 《一站式学习c编程》(对于大一大二学习C语言的同学强烈推荐这本教材) ### Python Codecademy上面的课程是不错的入门选择:[Learn Python2](https://www.codecademy.com/learn/learn-python) 书目: 《Python核心编程》第2版 (注意是第二版不是第三版!) 关于选择学习Python2还是Python3的问题,目前来说CTF当中可能还是Python2用的比较顺手一些;从开发的角度来讲,业界进来有大规模向Python3迁移的趋势。不过问题不大,毕竟2和3的差异也并不是太大,从2转向3也很简单。 ### Metasploit(getshell与提权) 这部分开始涉及安全工具了,Metasploit是一个强大的渗透攻击工具,里面集合了很多漏洞的利用工具。实际上Pwn要做的事情就是找到程序的漏洞并且编写漏洞利用工具,所以与其一上来就学习利用原理和编写方法,不如先学会用好别人编写的脚本。 利用这些工具的时候会涉及很多计算机网络相关的知识,包括一些服务器客户端的通讯,端口的概念等。 [Metasploit系列教程(第一季)](www.freebuf.com/articles/web/35930.html) [i春秋 msf视频](https://www.ichunqiu.com/search/msf) [i春秋实验课 - 带你感受MSF控制台的力量](https://www.ichunqiu.com/experiment/catalog?id=100005) 书目: 《Metasploit渗透测试指南》 ### Vim 推荐每个CTFer和程序员使用的编辑器! 有几个比较好玩的交互学习网站: [Openvim](https://www.openvim.com/) [Vim Adventure](https://vim-adventures.com/) [vimgenius](http://vimgenius.com) ## 进阶部分 高年级的同学或者基础比较好的也可以直接进入这部分学习。 目前最好的教程应该是伦斯勒理工学院的课程[Modern Binary Exploitation - CSCI 4968](https://github.com/RPISEC/MBE) 我就是通过这个教程入门的,虽然比起看中文的材料可能有些慢,但是每章节的内容十分详细完整,章节之间的逻辑也非常清晰,配套的实验课非常有趣。 从上面github地址上面可以下载到全部课件和实验课的材料。实验课有配套的虚拟机镜像下载,建议学习的时候先看课件,看完一章课件做一个实验的练习,每章的实验分为ABC三个难度,C最简单,要做完一个任务才能拿到下一个任务的题目。 按照流程学习完以后就算是入门了!然后就可以挑战过往比赛的题目,以下是几个题库地址: https://pwnable.xyz/ (据说是新手向) https://pwnable.tw/ (界面友好,题目较难) https://pwnable.kr/ (题目很多,大多能找到哦啊writeup) 学习过程中也有一些技巧总结的网站会比较有用: https://ctf-wiki.github.io/ctf-wiki/pwn/readme/ https://github.com/Naetw/CTF-pwn-tips 中文的教程好像还没有比较系统的,也建议大家根据具体题目找到其他Pwn选手的博客参考学习。 这里也有一些推荐书目: 《Hacking: The Art of Exploitation, 2nd Edition》 中文名:黑客之道:漏洞发掘的艺术 《The Shellcoder's Handbook》中文版:黑客攻防技术宝典(系统实战篇) ## 高级话题 如果普通国内比赛的题目难度已经难不到你了,那么可以考虑往一下几个方向学习: + 运行在其他架构上面的pwn:arm和mips (物联网和移动端应用) + symbolic execution 符号化执行 + kernel 内核漏洞 + windows pwn (windows上面的漏洞利用和linux还是差别很大的) + vm escape 虚拟机逃逸(最近开始研究这个hhh) + ... ---------- 打赏还是打残,这是个问题 赏 Wechat Pay Alipay [Pwn] zerotask - Cpt.shao [Pwn] Steak - Cpt.shao
没有帐号? 立即注册