《CTF特训营》——PWN:二进制安全基础

本文介绍了二进制安全的基础知识,包括NX数据执行保护和ASLR地址空间随机化机制,详细讲解了PWN漏洞类型和常见的利用方法,如shellcode、rop链等,并探讨了程序内存布局对安全的影响。
摘要由CSDN通过智能技术生成

目录

一、保护机制

1.NX:数据执行保护

2.ASLR:地址空间随机化

二、PWN漏洞类型

三、常见利用方法

1.shellcode

2.rop

3.Magic_Addr

4.Return-to-dl_resolve

四、程序内存布局

1.程序数据(Proc)

2.库数据(Memory Mapping)

3.栈(Stack)


一、保护机制

1.NX:数据执行保护

即DEP,是进制程序在非可执行的内存区中执行指令。在80x86体系中,操作系统的内存管理是通过页面表存储方式来实现,其最后一位就是NX位,0表示允许执行,1表示禁止执行。NX一般是防止直接在堆和栈上运行shellcode代码,gcc默认开启不可执行栈功能,添加编译选项z -exestack可开启栈可执行功能。

2.ASLR:地址空间随机化

/proc/sys/kernel/randomize_va_space里的值可以控制系统级的ASLR,使用root权限可以进行修改,有三个值可以设置:

(1)0:关闭ASRL

(2)1:mmap base、stack、vdso page将随机化,这里意味着“.so”文件将被加载到随机地址。连接时制定了-pie选项的可执行程序,其代码段加载地址将被随机化。假如配置内核时如果制定了

CONFIG_COMPAT_BRK,则randomize_va_sapce默认为1,此时heap没有随机化。

(3)2:在1的基础上增加了heap随机化。配置内核如果禁用CONFIG_COMPAT_BRK,则randomize_va_sapce默认2,ASLR可以保证在每次程序加载的时候自身和所加载的库文件都会被映射到虚拟地址空间的不同地址处。

(3)PIE:代码段随机化

(4)RELRO:重定位,一般分为partial relro和full relro,具体区别就是前者重定位信息可写,而后者不可写

(5)STACK CANARY:栈溢出保护,gcc编译程序默认开启,添加编译选项-fno-stack-protector会关闭程序的stac canary栈保护。

二、PWN漏洞类型

漏洞类型主要分为栈漏洞、堆漏洞、格式化字符串漏洞、整形漏洞、逻辑漏洞

三、常见利用方法

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值