❤️超详细PWN新手入门教程❤️《二进制各种漏洞原理实战分析总结》

本文详细介绍了二进制漏洞的概念,包括栈溢出、堆溢出、释放后重引用等常见漏洞类型,以及二进制漏洞挖掘工具的使用。通过实例分析,阐述了各种漏洞的原理,并提供了学习二进制安全的原因和路径,适合初学者入门。
摘要由CSDN通过智能技术生成

💂 个人主页: 你的小甜欣.~_CSDN博客
🤟 每天更新/学习教程/WEB安全/内网渗透/二进制安全/逆向工程/等文章,大家可以持续关注
💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦。
💅 有任何问题欢迎私信,看到会及时回复!

🌼 什么是二进制漏洞

二进制漏洞是可执行文件(PE、ELF文件等)因编码时考虑不周,造成的软件执行了非预期的功能。由于二进制漏洞大都涉及到系统层面,所以危害程度比较高。比如经典的office栈溢出漏洞CVE-2012-0158)、(CVE-2017-11882)以及(CVE-2017-11882)的补丁绕过漏洞CVE-2018-0802)等,都是危险程度极高的0day和1day漏洞。所以,二进制漏洞的挖掘和分析就显得尤为重要,本篇文章将对常见的二进制漏洞进行简要的介绍和分析。

🌴 常见的二进制漏洞介绍

  • 栈溢出漏洞(Stack-Overflow)

  • 堆溢出漏洞(Heap-Overflow)

  • 释放后重引用漏洞(Use-After-Free)

  • 双重释放漏洞(Double-Free)

  • 越界访问漏洞(Out-of-bounds)

🌀二进制漏洞挖掘常用工具

  • GDB: Linux调试中必要用到的
  • gdb-peda、pwndbg、gef: GDB调试插件
  • pwntools:写exp和poc的利器
  • libc-databases:可以通过泄露的libc的某个函数地址查出远程系统是用的哪个libc版本
  • checksec:可以很方便的知道elf程序的安全性和程序的运行平台
  • objdump :可以很快的知道elf程序中的关键信息
  • readelf:可以很快的知道elf程序中的关键信息
  • ida pro:反汇编工具
  • ROPgadget:强大的rop利用工具
  • one_gadget:可以快速的寻找libc中的调用exec(‘bin/sh’)的位置

又是一个小细节(熊猫头表情包)_熊猫_细节_一个表情

🐥 为什么学习二进制安全?

首先提出一个问题,不知道大家有没有碰到过在写代码中遇到过以下这样的问题:

  1. 明明看起来代码写的毫无问题,但是却在main函数之前就已经报错。
  2. 碰到一款好的软件,但是广告太烦无法关闭
  3. 你想知道一款软件的功能是如何实现的,却苦于没有源代码
  4. 软件出现崩溃,想要找到原因却无从下手
  5. 电脑中了病毒,杀毒软件却无法查杀
  6. 刚刚发布的产品,马上就被人破解了。上面只是提出一部分常见的问题。在学习二进制安全后你可以这样解决以上的问题。

🌵 学习后可以做些什么?

(1). 因为二进制安全需要深入理解计算机的运行机制,操作系统原理。所以碰到此类问题,你可以很快定位到错误位置,为你的编码工作提供强有力的支撑。

(2). 碰到这类软件的时候,你可以通过逆向工程的方式,将其中的广告页面替换,甚至直接将弹出广告的函数直接ret或用nop填充掉。还给自己一个清静没有广告的办公环境。

(3). 当你想知道这个功能如何实现的时候,你既可以静态分析其函数的实现逻辑,也可以动态跟踪它的数据流向,从而完整了解该功能是如何实现的。

(4). 当软件崩溃是不是无从下手,但是学了二进制安全之后你可以使用调试器接管异常,去发掘漏洞产生的位置,定位到模块或者函数的某一条语句。然后提供给厂商修复或者自己二次开发使用补丁修复漏洞。

(5). 当中了杀软无法识别的病毒是不是很恐慌,学习了二进制安全后就可以直接手动分析病毒做了些什么,并且将其执行的操作逆转,拯救中毒的计算机操作系统。

(6). 刚刚发布的软件马上就被别人破解了,没有收入了。是不是很郁闷,当学习了二进制安全后,你可以对你的软件加混淆、加花指令、加反调试、加代码虚拟化等等手段,让破解者的破解成本增加到无法承受,从而放弃破解。

🐼 如何学习二进制安全

上面我们已经讨论过了为什么要学,学了可以做什么。那么接下来我们要讨论的就是如何学习。当初学者兴致勃勃的准备开始学习的时候会发现,虽然书籍众多,却无从下手。一个不小心还会误入歧途,成为一个只懂得是什么,却不懂得为什么的庸人。接下来我们要做的就是,缕清这条线,让其清晰明了。

首先,我们作为二进制研发人员必须要懂的语言有三门半,为什么说是三门半呢,因为这四门语言是C、C++、Python以及汇编。C和C++属于一脉相承因此只算一门半语言,因为这两门语言的学习是连续的,不需要像学习Python或汇编一样重新学习语法结构。那么接下来我来说明一下为什么要学习这三门半语言。首先是C和C++,先不说开发杀毒引擎或者其他大型工程,仅仅有一点最为实际。那就是IDA pro所翻译出的伪代码是C语言格式的。另外在以后漏洞的学习中,除了汇编语言,C和C++是开发shellcode最为高效的语言。而且相比于汇编也更容易理解。并且也许我们想招写一些具有特殊功能的小玩意,比如远(病)控(毒)软(木)件(马),C和C++也一定是你最优秀的选择。或者我们需要写一些驱动代码,比如实现一个类似于火绒剑的监控软件,毕竟,你总不能去用易语言开发吧。现在的系统也不兼容啊对不对。

那么介绍完C和C++的用处,接下来说明下Python的作用。其实Python就像是一个万能胶水,哪里有用粘哪里。它可以辅助我们快捷的开发一些辅助分析工具或者Exploit。也可以充当解放双手释放劳动力解决重复操作的机器人。总之,Python除了性能感人,其他都不会让你失望的。最后说明一下汇编语言的作用。其实这是最不用解释的了。毕竟,动态分析中没有任何一款工具可以把代码还原成伪代码执行,我们分析过程中所接触的全都是汇编代码。

上面扯了一大段为什么要学习这些语言,那么下面来说明下如何学习这些语言。其实很简单,就是看书。当然如果觉得乏味,靠谱的教学视频也是可以的。

C语言有很多本书可以选择,但是我只推荐一本,避免选择困难。这本书叫做《C Primer Plus》,这本书的作者叫Stephen Prata,目前这本书已经翻译成中文版了,可以直接在网上购买。这本书详尽的说明了C语言语法你所需要了解的一切。推荐花30天时间简单学习,然后就开始学习C++。C++的学习我推荐使用《C++ Primer》作为教材。推荐学习时间依然是30天。

你以为我会让你接下来直接开始学Python?你太天真了。

C和C++在简单看完这两本书的情况,你只是知道,却不会使用。这时候你最需要的就是练习了。如果以前数学学的还不错,那就搞本《算法导论》,练习里面的算法与数据结构。如果基础差一点,就买一本国内出版的零基础学算法一类的书练习里面的例子。这个阶段我的推荐学习时长为60天。对,你没看错,和学习语法的时间一样长。

当你练习了这么久之后,就可以继续学习语言了。没错,终于到Python了,买本《Python核心编程》吧。你已经有了不错的基础,相信我,一周之内看完这本书你没问题的。不需要你记住所有库的 使用,Python的库实在太多了,你只需要记住大概有个什么库可以解决相关问题,需要的时候再去网上查就好了。

最后是我们的汇编语言,最艰苦的日子到了,这是个很难学的东西。我学习的时候也感觉头冷,但是很不幸,这是一门必要的语言。

汇编语言我推荐使用《汇编语言 基于x86处理器》这本书来学习。也许很多人都是学习的王爽老师的那本《汇编语言》入门的。我是我还是想推荐这本,因为这本书是我见过最容易理解的汇编语言教材。至此ÿ

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值