20145307陈俊达《网络对抗》shellcode注入&return to libc
20145307陈俊达《网络对抗》shellcode注入
Shellcode注入
基础知识
Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode的地址。
实践过程
将环境设置为:堆栈可执行、地址随机化关闭
选择anything+retaddr+nops+shellcode的结构构造攻击buf,先猜测返回地址所在位置,并且找到shellcode所在地址
在终端注入这段攻击buf:
先不输入“回车”,在后面的调试过程中需要继续运行的时候再回车,此时再打开另外一个终端,用gdb来调试20145307pwn1这个进程,先找到该进程的进程ID,再打开gdb,用attach指令对该进程进行调试:
对foo函数进行反汇编,在ret处设置断点,接着继续运行到断点处,显示当前esp的值并依照此位置显示接下来的内存地址内容,来分析我们之前猜测的返回地址位置是否正确
继续运行确认返回地址:
将返回地址修改为0xffffd364,重新注入
接下来是return to libc的实验
首先创建一个新的用户,我们命名为stayreal
建立相关属性用id等命令确认创建的id是否可行。编译程序。
把system的放置在环境变量BIN_SH中,然后获取BIN的地址,同时用GDB获取system和exit的地址
运行gdb调试 获得system和exit的值
之后就运行exploit和retlib
然后ls出先内容,whoami发现嘻嘻嘻是root
感想感想
嗯 还是蛮刺激的 竟然能攻破linux的防线 嗯 继续努力