缓冲区溢出攻击_缓冲区溢出攻击vs_xss攻击(3)

电脑杂谈  发布时间:2017-03-01 17:11:16  来源:网络整理

而 strcpy(buffer+100,shellcode); 这一句又告诉我们,shellcode保存在 buffer+100 的位置。

现在我们要得到shellcode在内存中的地址,输入命令:

gdb stack

disass main
结果如图:

接下来的操作:

根据语句 strcpy(buffer+100,shellcode); 我们计算shellcode的地址为 0xffffd1b0(十六进制)+100(十进制)=0xffffd214(十六进制)

现在修改exploit.c文件!将 \x??\x??\x??\x?? 修改为 \x14\xd2\xff\xff

然后,编译exploit.c程序:

gcc -m32 -o exploit exploit.c

先运行攻击程序exploit,再运行漏洞程序stack,观察结果:

可见,通过攻击,获得了root权限!

2.练习二

(实验二未成功截图,由于错误操作,无法从练习三返回练习二的实验结果)

3.练习三

四、实验总结

1.(遇到的问题)实验时出现sudo:无法解析主机,但后来百度查询后,发现这个是因为主机名称的问题,并不影响实验,就没有对其进行修改。另外,由于网速的问题,有些命令行可能会重复或者出错,尤其在需要输入密码的程序段之后。

2.许多shell程序在被调用时自动放弃它们的特权。因此,即使你能欺骗一个Set-UID程序调用一个shell,也不能在这个shell中保持root权限。

3.操作系统所使用的缓冲区 是"堆栈".,在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出 。缓冲区溢出通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。

4.在练习二中,由于地址空间随机化被开启,导致之前计算的地址与实际的地址出现了不同,从而不能完成攻击。而练习三中,使用的bash程序,当shell运行时,没有root权限,此时,即便攻击程序攻击了漏洞程序,也无法完成攻击。

5.通过本次实验,我了解了一些关于缓冲区溢出的保护机制以及缓冲区安全的重要性,明白了堆栈地址与权限的作用,堆栈初始地址的随机化和放弃root权限对于防止黑客利用缓存区溢出进行攻击有非常重要的作用。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-35223-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...