有什么真正为小白(对小白比较友好)的 pwn学习材料?
谢谢 各位 巨巨 光临此问题!
有什么真正为小白(对小白比较友好)的 pwn学习材料(wiki 感觉 略难)
linux 下的 pwn哦~ !(之前有进行win32逆向)
网上 零零散散 体系 不太全
希望各位巨佬 能分享 学习之路 学习材料
会觉得wiki难,很大可能性是基础不牢固。
编程基础
学习安全不能进入一个误区,那就是把信息安全和计算机科学看作是两个并列的不同学科,这是不对的,信息安全应该是计算机科学的一个子集。所以说想要学好pwn,编程基础必须要牢固。
首先Python要会,这个不建议看书,可以在网易公开课或者可汗学院这种平台上找,知乎也有很多推荐,就不在此列举了,还有就是要动手写不能只看。
然后C要会吧,C++倒可以先放一边,C primer plus这本书大致要翻一遍吧,不说记住每个细节点至少要对这个语言有所了解,不然F5出来的代码都看不懂,更别说去在这里面寻找不规范的代码了。然后就是练习,可以自己写一些玩具项目,或者找一些比较基础的演算法自己动手实现一下,比方说图的那几个演算法。
逆向基础
虽然pwn和reverse是两个不同的category,但是pwn一般也是需要逆向的。首先是要学好汇编,这个首推CSAPP,然后还可以看看C++反汇编与逆向技术揭秘。
然后是工具的使用,Linux下pwn的话,静态分析(如IDA)+调试器(如gdb)+pwntools是最低配置了,这个我认为不需要专门去看什么资料,自己琢磨琢磨边用边查就会了。。。
学习的方法
题主指的wiki大概是CTF wiki吧,那个并不难,我认为你没有弄明白的原因可能是光看没有去动手做,学习的时间大概控制在3成看资料7成自己动手做,从分析程序到exploit写出来。有些地方实在不明白可以在一些技术群里问,但是不要伸手。有些东西光看我也弄不明白,甚至自己写的文章过一段时间去看也会有点弄不懂,这个非常正常。
其实还有一种方法是直接去做题(如pwnable.kr/http://pwnable.tw),然后去看什么知识点有遗漏再去学,比如我就是这么学习的。可以去ctftime上找一些比赛去参加,上面也有一些非常入门级的比赛,做比赛的动力可能会比随便找题做的动力要大一点。
最后推荐一波XMan夏令营,能学到很多东西,还能遇到很多大佬
pwn学习(一)?www.jianshu.com
很不错的学习计划。
一本好书才是关键。
看到这个问题的时候,刚好出版社推了一本书给我,我觉得值得推荐。以下内容来自:
玄魂:好书推荐:专注CTF Pwn的著作终于来了!从此悟透各类漏洞利用技术?zhuanlan.zhihu.com- 做开发要刷Leetcode - - 搞安全要打CTF -
CTF(Capture The Flag)中文一般译作夺旗赛,通俗来讲,就是模拟「黑客」所使用的技术、工具、方法等手段发展出来的网路安全竞赛。近年,国内外各类高质量的CTF竞赛层出不穷,CTF已经成为学习、提升信息安全技术,展现安全能力和水平的绝佳平台。
CTF赛题涉及的非常领域广,市面上相关书籍还停留在知识广度上的覆盖,但CTF模块间的发展程度参差不齐,始终缺少能够深入介绍单一领域的内容,尤其是Pwn方向!
而Pwn恰恰是CTF竞赛中体现技术实力的关键部分、也是最难的部分!
---- Pwn ----
Pwn在黑客俚语中代表著攻破,获取许可权,由「own」这个词引申而来。在CTF比赛中它代表著溢出类的题目,主要考查参赛选手对漏洞的利用能力。
身为二进位安全相关模块,偏向于底层方向,学习曲线陡峭,要求学习者对系统的理解更加深入。
所需知识:C、OD+IDA、数据结构、操作系统。
▼
今天博文菌带来了一本《CTF竞赛权威指南(Pwn篇)》
杨超 编著
本书专注于Linux二进位安全。全书包含12章,从二进位底层开始,结合源码详细分析了常见的二进位安全漏洞、缓解机制以及漏洞利用方法,并辅以分析工具和环境搭建的讲解。
本书在素材的选择上较为连续、完整,每个知识点均配以经典例题,并花费了大量篇幅深入讲解,以最大程度地还原分析思路和解题过程。读者完全可以依据本书自主、系统性地学习,达到举一反三的效果。
可谓悟透各类漏洞利用技术、深入掌握CTF Pwn的精要之作!
▼本书详情▼
CTF竞赛权威指南(Pwn篇)(博文视点出品)¥ 69.50起2腾讯eee战队亲自指导
本书的审校者腾讯科恩实验室负责人吴石老师率领的腾讯eee战队——曾多次斩获国内外高等级竞赛的大奖,相关经验非常丰富。
吴石老师对本书评价道:
Pwn是网路安全攻防最有魅力的部分,对于原教旨攻防人士来说,Pwn才是原汁原味的技术体现。二进位Pwn一直是CTF比赛的热点和难点,本书定位于CTF Pwn且仅仅只包含Pwn,可以让醉心于攻防领域的人士大快朵颐。
此外,《Python绝技:运用Python成为顶级黑客》、《最强Android书:架构大剖析》译者崔孝晨老师更是为本书作序推荐,并在推荐序中赞扬道:
书中所用的例子贴近CTF实战,讲解详尽,思路清晰,非常有助于读者理解和学习。
本书为广大学子和从业人员学习漏洞利用技术知识提供了有益的指导。相信有志学习者,经过认真钻研,必能早日登堂入室,为我国网路安全事业的发展添砖加瓦。
同样力荐本书的行业大咖还有:
- 孔韬循(K0r4dji),破晓安全团队创始人、360网路安全专家
- 泉哥,《漏洞战争:软体漏洞分析精要》作者
- 曾裕智,漏洞盒子安服总监
本书的作者杨超,毕业于西安电子科技大学,L-Team成员。目前就职于中国汽研北京分院,从事车联网安全研究和工具开发。曾在海康威视、斗象科技工作过。活跃在开源社区。
下面我们来看看他对入门二进位安全的一些学习经验分享。
二进位安全入门
1. 计算机基础
二进位安全是一个比较偏向于底层的方向,因此对学习者的计算机基础要求较高,如C/C++/Python编程、汇编语言、计算机组成原理、操作系统、编译原理等,可以在MOOC上找到很多国内外著名高校的课程资料,中文课程推荐网易云课堂的大学计算机专业课程体系,英文课程推荐如下。
- Harvard CS50 Introduction to Computer Science
- CMU 18-447 Introduction to Computer Architecture
- MIT 6.828 Operating System Engineering
- Stanford CS143 Compilers
2.静态反汇编和动态调试
在具备了计算机基础后,二进位安全又可以细分为逆向工程和漏洞挖掘与利用等方向。学习的目标是掌握各平台上静态反汇编(IDA、Radare2)和动态调试(GDB、x64dbg)工具,能够熟练阅读反汇编代码,理解x86、ARM和MIPS二进位程序,特别要注意程序的结构组成和编译运行的细节。此阶段,大量动手实践是达到熟练的必经之路。推荐资料如下。
- Secure Coding in C and C++, 2nd Edition
- The Intel 64 and IA-32 Architectures Software Developer』s Manual
- ARM Cortex-A Series Programmer』s Guide
- See MIPS Run, 2nd Edition
- Reverse Engineering for Beginners
- 《程序员的自我修养:链接、装载与库》
- 《加密与解密,第4版》
3. 软体漏洞
接下来,就可以进入软体漏洞的学习了,从CTF切入是一个很好的思路。跟随本书的脚步,可以学习到常见漏洞(溢出、UAF、double-free等)的原理、Linux漏洞缓解机制(Stack canaries、NX、ASLR等)以及针对这些机制的漏洞利用方法(Stack Smashing、Shellcoding、ROP等),此阶段还可以通过读write-ups来学习。在掌握了这些基本知识之后,就可以尝试分析真实环境中的漏洞,或者分析一些恶意样本,推荐资料如下。
- RPI CSCI-4968 Modern Binary Exploitation
- Hacking: The Art of Exploitation, 2nd Edition
- The Shellcoder』s Handbook, 2nd Edition
- Practical Malware Analysis
-《漏洞战争:软体漏洞分析精要》
4. 程序分析理论
有了实践的基础之后,可以学习一些程序分析理论,比如数据流分析(工具如Soot)、值集分析(BAP)、可满足性理论(Z3)、动态二进位插桩(DynamoRio、Pin)、符号执行(KLEE、angr)、模糊测试(Peach、AFL)等。这些技术对于将程序分析和漏洞挖掘自动化非常重要,是学术界和工业界都在研究的热点。感兴趣的还可以关注一下专注于自动化网路攻防的CGC竞赛。推荐资料如下。
- UT Dallas CS-6V81 System Security and Binary Code Analysis
- AU Static Program Analysis Lecture notes
5. 其他
如果是走学术路线的朋友,阅读论文必不可少,一开始可以读综述类的文章,对某个领域的研究情况有全面的了解,然后跟随综述去找对应的论文。个人比较推荐会议论文,因为通常可以在作者个人主页上找到幻灯片,甚至会议录像视频,对学习理解论文很有帮助。如果直接读论文则感觉会有些困难,这里推荐上海交通大学「蜚语」安全小组的论文笔记。坚持读、多思考,相信量变终会产生质变。
为了持续学习和提升,还需要收集和订阅一些安全资讯(FreeBuf、SecWiki、安全客)、漏洞披露(exploit-db、CVE)、技术论坛(看雪论坛、吾爱破解、先知社区)和大牛的技术博客,这一步可以通过RSS Feed来完成。
随著社会媒体的发展,很多安全团队和个人都转战到了Twitter、微博、微信公众号等新媒体上,请果断关注他们(操作技巧:从某个安全研究者开始,遍历其关注列表,然后递归,即可获得大量相关资源),通常可以获得最新的研究成果、漏洞、PoC、会议演讲等信息甚至资源链接等。
深入掌握更多CTF Pwn技术内幕请关注《CTF竞赛权威指南(Pwn篇)》一书!
▼本书详情▼
CTF竞赛权威指南(Pwn篇)(博文视点出品)¥ 69.50起2本文赠书5本图书给读者,参与办法
谢邀,pwn菜鸡斗胆答一下(
个人的学习路线是先把逆向工程核心原理和0day安全上边的漏洞类型和漏洞原理大致了解,这时候就可以做一些简单的pwn练手了,比如jarvisoj和pwnable.kr上边的一些基础的题。下边就是研究glibc内存分配的实现,这一步需要大量的时间跟耐心,最好是边自己想如果自己来做一个内存分配器会怎么实现然后边看libc源码。做完这些基本可以去分析一些最新cve研究下怎么利用了,也可以研究fuzz自己挖洞了
用过C/C++编译器的断点调试功能了么。
会用GDB,OD调试么。
调试技术才是pwn的核心技术。
pwntools有个gdb.attach()非常好用
有一个星期就调试一个漏洞的,就是要弄懂的决心么?
我初中学到大学毕业,还没学会。
大量的,海量的做题,复现,ctfwiki都是基础。可以联系一下我一起交流一下(本人也是菜鸡)
基础不牢,地动山摇,所以我推荐xman夏令营(狗头
推荐阅读: