pwn入门教程--0x01(必备知识)

pwn入门教程–0x01(必备知识)

• Binary Exploitation

• Pwn即Binary Exploitation,就是利用二进制漏洞来达到控制程序的工作流程(Control Flow)
• 其目的就在于获得程序的控制权从而来控制程序所在主机

• Binary Format

即二进制文件的格式,如下:
• 在Linux上叫做ELF(Executable and Linking Format)文件

• 组成部分分为
·rodata:read only data(只读数据)
·data:数据节
·code:编译好的代码
·stack:栈
·heap:堆

在这里插入图片描述
上图中的Memory Mapping就是指程序在运行后会被映射到内存上,称为Memory Mapping(内存映射)

• x64 Calling Convention

即调用约定
• rdi, rsi, rdx, rcx, r8, r9, (push to stack)
• rdi, rsi, rdx, r10, r8, r9, (push to stack) for system call
• return value is stored in rax
具体过程入下方动态图所示
在这里插入图片描述

• Stack Frame

堆叠框架
• Function Prologue
• Function Epilogue

具体过程 如下方动态图所示
在这里插入图片描述

• Buffer Overflow

缓冲区溢出,其实就是放的东西太多溢出来了
具体过程 如下方动态图所示
在这里插入图片描述

• Protection(保护机制)

• CANNARY(栈保护) –金丝雀
可以用checksec命令检查开启情况
栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让 shellcode 能够得到执行。当启用栈保护后,函数开始执行的时候会先往栈底插入 cookie 信息,当函数真正返回的时候会验证 cookie 信息是否合法 (栈帧销毁前测试该值是否被改变),如果不合法就停止程序运行 (栈溢出发生)。攻击者在覆盖返回地址的时候往往也会将 cookie 信息给覆盖掉,导致栈保护检查失败而阻止 shellcode 的执行,避免漏洞利用成功。在 Linux 中我们将 cookie 信息称为 Canary。

• NX(DEP)(数据执行保护 Data Execution Prevention)
可以用checksec命令检查开启情况
NX即No-eXecute(不可执行)的意思,NX(DEP)的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。

• ASLR
内存地址随机化机制(address space layout randomization)
可以用checksec命令检查开启情况
有以下三种情况:
0 - 表示关闭进程地址空间随机化
1 - 表示将mmap的基址,stack和vdso页面随机化
2 - 表示在1的基础上增加堆(heap)的随机化

• PIE (Position Independent Execution)
可以用checksec命令检查开启情况
开启后,code与data都会跟着ALSR打乱基址

本节就到这里了,有问题可以留言,希望下一节还有你哦~

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值