Skip to main content
Side panel
Home
课程搜索
More
English (en)
简体中文 (zh_cn)
English (en)
Log in
Home
课程搜索
Open course index
Open block drawer
Home
Courses
软件安全实验
格式化字符串攻击实验
任务 3:修改服务器程序的内存
任务 3:修改服务器程序的内存
Section outline
本任务的目标是修改服务器程序中的 target 变量的值(我们将继续使用 10.9.0.5)。target 的原始值是 0x11223344。假设这个变量保存了一个重要的值,可以影响程序的控制流。如果远程攻击者可以更改其值,他们可以改变这个程序的行为。我们有三个子任务。
Collapse
Expand
任务3.A:将值更改为不同的值
在这个子任务中,我们需要更改 target 变量的内容。只要你能更改它的值,无论它是什么值,你的任务就被认为是成功的。target 变量的地址可以从服务器打印输出中找到。
Collapse
Expand
任务3.B:将值更改为 0x5000
在这个子任务中,我们需要将 target 变量的内容改为一个特定值 0x5000。你的任务只有在变量的值变为 0x5000 时才被认为是成功。
Collapse
Expand
任务3.C:将值更改为 0xAABBCCDD
这个子任务与前一个相似,只是现在的目标值是一个很大的数字。在格式化字符串攻击中,这个值是由 printf() 函数打印出的字符总数决定的。打印出这么多的字符可能需要几个小时。你需要使用更快的方法。基本思路是使用 %hn 或 %hhn,而不是 %n,这让我们可以一次修改两字节(或一字节)的内存空间,而不是四个字节。打印出 2
16
个字符不会花费太多时间。更多细节可以在以下指南中找到。
Select activity 格式化字符串的长度修饰符
格式化字符串的长度修饰符
Page