跳到主要内容
停靠面板
首页
课程搜索
更多
简体中文 (zh_cn)
简体中文 (zh_cn)
English (en)
登录
首页
课程搜索
打开课程索引
打开块抽屉
首页
课程
软件安全实验
格式化字符串攻击实验
任务 3:修改服务器程序的内存
任务 3:修改服务器程序的内存
章节大纲
本任务的目标是修改服务器程序中的 target 变量的值(我们将继续使用 10.9.0.5)。target 的原始值是 0x11223344。假设这个变量保存了一个重要的值,可以影响程序的控制流。如果远程攻击者可以更改其值,他们可以改变这个程序的行为。我们有三个子任务。
折叠
展开
任务3.A:将值更改为不同的值
在这个子任务中,我们需要更改 target 变量的内容。只要你能更改它的值,无论它是什么值,你的任务就被认为是成功的。target 变量的地址可以从服务器打印输出中找到。
折叠
展开
任务3.B:将值更改为 0x5000
在这个子任务中,我们需要将 target 变量的内容改为一个特定值 0x5000。你的任务只有在变量的值变为 0x5000 时才被认为是成功。
折叠
展开
任务3.C:将值更改为 0xAABBCCDD
这个子任务与前一个相似,只是现在的目标值是一个很大的数字。在格式化字符串攻击中,这个值是由 printf() 函数打印出的字符总数决定的。打印出这么多的字符可能需要几个小时。你需要使用更快的方法。基本思路是使用 %hn 或 %hhn,而不是 %n,这让我们可以一次修改两字节(或一字节)的内存空间,而不是四个字节。打印出 2
16
个字符不会花费太多时间。更多细节可以在以下指南中找到。
选择活动格式化字符串的长度修饰符
格式化字符串的长度修饰符
网页