20145229吴姗珊《网络对抗》shellcode注入&Return-to-libc攻击深入(待上传)
shellcode注入
shellcode是一段代码,是溢出程序和蠕虫病毒的核心,一般可以获取权限,如果将代码存储到对方的栈中,将返回地址利用缓冲区溢出就可以指向我们所希望的shellcode
实践
首先需要一个shellcode,我就取名为20145229shellcode啦
编译运行一下呗
为了在后面查询文件的堆栈是否可以执行,所以需要安装execstack指令
配置环境,查询地址随机化是否开启
execstack -s:设置堆栈可执行
execstack -q:查询文件的堆栈是否可执行 X为可执行
参数0表示地址随机化关闭,1表示将mmap基址,stack和vdso页面随机化,2为在1的基础下增加栈随机化构造要注入的payload
以下buf结构为:nops+shellcode+retaddr,nop为了填充以及一个保险的作用,保证我们的猜测只要一个到nop即可跳转shellcode
用\x4\x3\x2\x1覆盖返回地址的位置(这个图打字打错了,但是正确那个忘截图了,就用这个吧)打开另一个终端攻击buf,后面调试工程再按回车!!切记!!
再打开一个终端,查找与20145229shellcode相关的进程,前面的终端按一下回车,出现如下图,找到该进程号为2304
打开gdb,用attach指令进行反汇编
对foo函数进行反汇编
在ret处设置断点,查看注入buf的内存地址,分析我们之前猜测的返回地址位置是否正确
这里经历了诸多磨难,发现前面有个地方输错了!!!然后重新来!!