Section outline

  • 本任务的目标是修改服务器程序中的 target 变量的值(我们将继续使用 10.9.0.5)。target 的原始值是 0x11223344。假设这个变量保存了一个重要的值,可以影响程序的控制流。如果远程攻击者可以更改其值,他们可以改变这个程序的行为。我们有三个子任务。
      • 在这个子任务中,我们需要更改 target 变量的内容。只要你能更改它的值,无论它是什么值,你的任务就被认为是成功的。target 变量的地址可以从服务器打印输出中找到。
      • 这个子任务与前一个相似,只是现在的目标值是一个很大的数字。在格式化字符串攻击中,这个值是由 printf() 函数打印出的字符总数决定的。打印出这么多的字符可能需要几个小时。你需要使用更快的方法。基本思路是使用 %hn 或 %hhn,而不是 %n,这让我们可以一次修改两字节(或一字节)的内存空间,而不是四个字节。打印出 216 个字符不会花费太多时间。更多细节可以在以下指南中找到。