格式化字符串漏洞探索:Linux程序崩溃与地址解析
下载需积分: 0 | PDF格式 | 503KB |
更新于2024-08-05
| 48 浏览量 | 举报
"这篇资源是关于SP2019实验2.4的,主题是Format String Vulnerability,作者通过分析和解决程序崩溃的问题,探讨了如何利用格式化字符串漏洞读取内存中的特定值。"
在计算机安全领域,Format String Vulnerability(格式字符串漏洞)是一种常见的缓冲区溢出类型,它发生在程序使用用户提供的格式字符串来格式化输出时。在这个实验中,作者编译并运行了一个名为"vul_prog.c"的程序,这个程序包含了格式字符串漏洞,可以通过输入特定的格式化字符串导致程序崩溃。
作者首先尝试通过输入多个"%s"来触发崩溃,并发现最少需要输入3个"%s"才能使程序崩溃。接着,他了解到要读取内存中secret[1]的值,需要知道格式化字符串的存储位置。通过试验,他发现输入的格式化字符串与目标内存地址相差10个地址。
然后,作者尝试指定内存地址来查看secret[1]的值,但由于程序未正确处理某些字符(如\x0c),导致段错误。为解决这个问题,作者尝试使用管道和010editor软件创建一个十六进制文件,输入期望的地址和格式化字符串(%10$s)。然而,由于0x0C(换页符)在内存中被忽略,而后面的%字符被误解析,导致地址输出错误。
作者意识到问题在于0x0C(ASCII换页符)在输入字符串中无法正常处理,因此考虑避免使用包含0x0C的地址。为解决这个问题,他探索了不同的输入策略,包括添加额外的数据来调整对齐,但未取得成功。
最终,作者发现了0x0C是换页符,意味着在字符串中输入时会被当作新行处理,从而导致数据不正确地传递给格式化函数。这意味着需要找到一种方法来绕过或替代0x0C,以正确地传递地址并读取secret[1]的值。
这个实验过程揭示了格式字符串漏洞利用的复杂性,以及在实际问题解决中可能遇到的挑战。理解内存布局、端序规则以及字符编码在调试这类问题时至关重要。通过这样的练习,学习者可以深化对缓冲区溢出和内存安全的理解,提高在安全编程方面的技能。
相关推荐
KateZeng
- 粉丝: 27
- 资源: 330
最新资源
- ziplet-base64-test:Ziplet Servlet过滤器的Base64测试
- csvhub:Chrome扩展程序可在GitHub上显示漂亮的CSV差异
- 圆形环绕构成的SWOT幻灯片关系图下载PPT模板
- Auto-Trading
- 《工程测试技术基础》PPT.zip
- foreachfile2txt.zip
- laptrinhweb:bai thi cuoi ky
- circleci-cli:从命令行使用CircleCI
- react-native-credit-card-display
- 一张4部分组合关系幻灯片图表下载PPT模板
- call代码测试.rar
- cycle-onionify, 面向 Cycle.js 应用的分形状态管理.zip
- Labb4.MP3Player
- aw-watcher-web:ActivityWatch的浏览器监视程序
- 适用于求解带超高维线性约束且非凸目标函数优化问题的粒子群优化算法
- 屏幕保护程序,用于微比特AustinIz:屏幕保护程序,用于微比特AustinIz,由GitHub Classroom创建