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的防线 嗯 继续努力

posted @ 2017-03-12 22:22  20145307陈俊达  阅读(197)  评论(0编辑  收藏  举报