吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3746|回复: 27
上一主题 下一主题
收起左侧

[漏洞分析] 栈溢出漏洞分析

[复制链接]
跳转到指定楼层
楼主
xiaoxiaoY520 发表于 2023-7-28 13:32 回帖奖励
最近在上班摸鱼的时候看了钱林松老师的一家之言视频,其中推荐了一本书——0day安全:软件漏洞分析技术。就长这个样子:


浅读了一下开篇部分,觉得讲的非常透彻,但是停于理论上的理解总没有实践理解的透彻,决定自己动手调试一下,于是有了这篇帖子。

程序长这样:
#include <stdio.h>
#include <string.h>

void vulnerableFunction() {
    char buffer[8] = "aliceyu"; // 栈上的缓冲区,大小为8字节
    printf("%s\n", buffer);
    printf("输入数据:");
    gets(buffer); // 不安全的输入函数,没有进行边界检查

    printf("输入的数据:%s\n", buffer);
}

int main() {
    vulnerableFunction(); // 调用有漏洞的函数

    return 0;
}

使用32位debug模式,并且关掉优化:



编译完成后可以利用cff工具关掉随机地址,便于调试:


拖进od中,运行起来后停在输入那里:


在这里打断点(我不会告诉你为什么要在这里打断点,因为写帖子的时候我也忘了为什么。。。)后输入内容按回车:


可以使用od的查找二进制字符串功能找到栈区刚输入的字符串在18FE18处,注意该处两个字节后的数据:



当输入超过7个字符时,上面所说两个字节后的数据就被覆盖了:


当输入20个字符a时,可以发现栈中已经有函数地址被改了,弹出的地址从4118A6变成了411800,该处如果是我们注入的shellcode,执行流就转到了shellcode执行:


自己画了个简易的图,可能理解有误,不太清楚push ebp后ebp的值与书中提到的函数返回地址(函数调用完后弹出到ip寄存器的值)的位置,暂且就这么理解了。有大佬了解的还望指点一下,我也会作修改,防止误导后来人。

免费评分

参与人数 7吾爱币 +10 热心值 +6 收起 理由
Niuer + 3 + 1 钱灵松老师的一家之言栏目我也很爱看。
fjk2001 + 1 谢谢@Thanks!
towenyu + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
1MajorTom1 + 1 热心回复!
Hmily + 4 + 1 用心讨论,共获提升!
dodolock + 1 + 1 用心讨论,共获提升!
安道尔的鱼 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| xiaoxiaoY520 发表于 2023-7-30 18:04 |楼主
liangjinwuxin 发表于 2023-7-30 16:42
请问,在vs studio中关掉优化的作用是什么呀

大概是因为我比较菜,新手刚入门,不优化的代码就已经调的很费劲了,优化过后可能导致根本看不懂,代码优化掉后可能会导致代码流程跟你想的不太一样。就类似从北京到上海,你的想法是做地铁转火车转公交,最后到了上海;但是编译器直接给你优化成飞机直达。都能达到同样的结果,但是当你来调试时,你按你的思维来找地铁哪到哪,火车哪到哪,你根本找不到,因为已经从飞机直达了。当然,debug模式默认就是关闭优化的,我只是怕有的跟我一样的新手朋友想复现的时候用了release,并且代码优化过了,跟我截图不一样,所以提了一下。
推荐
bjjette 发表于 2024-3-15 15:32
这个只能说越界后是未可知,不同的编译器和操作系统行为都不尽相同。但是安全编程必须使用越界判断,因为C和C++自身都不是安全语言,无法自己保证。很多越界遗留到很久执行后才爆发,无从知道真正是怎么发生的。
沙发
tohyueyun 发表于 2023-7-28 15:51
3#
Copycodeman 发表于 2023-7-28 15:53
感谢分享
4#
99dog99 发表于 2023-7-28 22:40
好厉害,谢谢分享。
5#
天枰 发表于 2023-7-28 23:17
感谢分享
6#
tp206555 发表于 2023-7-29 07:28
感谢分享  学习学习
7#
xchappy 发表于 2023-7-29 09:18
感谢分享
8#
feng710 发表于 2023-7-29 13:30
感谢分享
9#
gzl5755 发表于 2023-7-29 17:56
感谢分享!
10#
hdydy 发表于 2023-7-29 19:53
好厉害,谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-21 16:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表