20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

时间:2021-09-02 03:53:57

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

下载安装execstack
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

完成环境配置
execstack -s pwn5303:将堆栈设为可执行状态
execstack -q pwn5303:查看文件pwn5302的堆栈是否是可执行状态
用more /proc/sys/kernel/randomize_va_space:查看地址随机化的状态
用echo "0" > /proc/sys/kernel/randomize_va_space:关闭地址随机化

构造要注入的payload

用anything+retaddr+nops+shellcode结构构造
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

注入这段攻击buf:
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

用gdb来调试pwn1这个进程
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

设置断点,来查看注入buf的内存地址
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

在另外一个终端中按下回车
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

返回地址改为0xffffd3c1
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

Return-to-libc 攻击实验

创建32位C语言可编译的环境

进入32位linux操作环境,进入bash,并关闭地址随机化
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

在/tmp下创建“retlib.c”文件,并编译设置SET-UID
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

在/tmp下创建“getenvaddr.c”文件用于读取环境变量,并编译。在/tmp下创建“exploit.c”文件用于攻击
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

进入gdb设置断点,调试运行获取system和exit的地址
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

删除 exploit 和 badfile ,重新编译exploit.c,然后先运行攻击程序 exploit,再运行漏洞程序 retlib
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

将/bin/sh重新指向/bin/bas
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

修改程序
20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入

20145334赵文豪《网络对抗》shellcode注入&Return-to-libc攻击深入