更新之后进行随机化初始地址分配
禁止不能在这个shell中保持root权限,也就是调用shell是能够同时保存root权限
为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash
stack.c文件存放的位置存疑
提示找不到输入的文件或者如下图存放
进入tmp目录下运行文件
GCC编译器有一种栈保护机制来阻止缓冲区溢出,所以我们在编译代码时需要用 –fno-stack-protector 关闭这种机制。 -z execstack 用于允许执行栈。
chmod u+s stack 需要root模式下进行
不小心退出实验楼
重新进入实验楼
实验继续
进入查找首地址
取得shellcode在内存中的地址0xffffd030
算出地址0xffffd094
键入exploit.c文件中
gdb不知道如何退出
关掉重来,进入攻击后如图
没有显示root 就是有#号
exit后
再做一次还是如此
吃完饭再来一次实验成功了
whoami是要自己输入,并非输出
练习题
sudo sysctl -w kernel.randomize_va_space=2 后初始化的首地址发生变化变为这个了0xfff824d0,这攻击进入的地址为0xfff82534,如果不进行地址更改而直接攻击的的话必定是失败的
出现了段错误
更改地址时候
也是错误的,不能获得root
将/bin/sh重新指向/bin/bash(或/bin/dash),观察能否攻击成功,能否获得root权限。
linux系统中,/bin/sh实际是指向/bin/bash或/bin/dash的一个符号链接。为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash,因此我省略了 sudo su
cd /bin
rm sh
ln -s zsh sh
exit
这一步,也就是没有代替/bin/bash
实验显示是可以root
学习时间 501分钟
操作时间 204分钟
按键次数 4166次
实验次数 5次
报告字数 2190字
是否完成 完成