20145307陈俊达《网络对抗》shellcode注入&return to libc

时间:2024-01-15 10:33:08

20145307陈俊达《网络对抗》shellcode注入
Shellcode注入

基础知识

Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode的地址。
实践过程

将环境设置为:堆栈可执行、地址随机化关闭
20145307陈俊达《网络对抗》shellcode注入&return to libc
20145307陈俊达《网络对抗》shellcode注入&return to libc

选择anything+retaddr+nops+shellcode的结构构造攻击buf,先猜测返回地址所在位置,并且找到shellcode所在地址
20145307陈俊达《网络对抗》shellcode注入&return to libc

在终端注入这段攻击buf:

20145307陈俊达《网络对抗》shellcode注入&return to libc

先不输入“回车”,在后面的调试过程中需要继续运行的时候再回车,此时再打开另外一个终端,用gdb来调试20145307pwn1这个进程,先找到该进程的进程ID,再打开gdb,用attach指令对该进程进行调试:

20145307陈俊达《网络对抗》shellcode注入&return to libc

对foo函数进行反汇编,在ret处设置断点,接着继续运行到断点处,显示当前esp的值并依照此位置显示接下来的内存地址内容,来分析我们之前猜测的返回地址位置是否正确

20145307陈俊达《网络对抗》shellcode注入&return to libc

继续运行确认返回地址:

将返回地址修改为0xffffd364,重新注入
20145307陈俊达《网络对抗》shellcode注入&return to libc

接下来是return to libc的实验

首先创建一个新的用户,我们命名为stayreal
20145307陈俊达《网络对抗》shellcode注入&return to libc

建立相关属性用id等命令确认创建的id是否可行。编译程序。
20145307陈俊达《网络对抗》shellcode注入&return to libc

20145307陈俊达《网络对抗》shellcode注入&return to libc

20145307陈俊达《网络对抗》shellcode注入&return to libc

把system的放置在环境变量BIN_SH中,然后获取BIN的地址,同时用GDB获取system和exit的地址

20145307陈俊达《网络对抗》shellcode注入&return to libc

运行gdb调试 获得system和exit的值
20145307陈俊达《网络对抗》shellcode注入&return to libc

之后就运行exploit和retlib
然后ls出先内容,whoami发现嘻嘻嘻是root
20145307陈俊达《网络对抗》shellcode注入&return to libc

感想感想

嗯 还是蛮刺激的 竟然能攻破linux的防线 嗯 继续努力