20145223 杨梦云 《网络对抗》shellcode实验+return-to-libc实验
20145223 杨梦云 《网络对抗》shellcode实验+return-to-libc实验
shellcode注入实践
Shellcode基础知识
·Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。
·Shellcode一般是作为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,一般会和系统里的漏洞相关,因此shellcode只对没有打补丁的主机有用武之地。
·漏洞利用中最关键的是Shellcode的编写。由于漏洞发现者在漏洞发现之初并不会给出完整Shellcode,因此掌握Shellcode编写技术就显得尤为重要。
实践过程:
(一)实践中的shellcode代码如下:
(二)设置环境
为了防止注入,程序在编译时,编译器在每次函数调用前后都会加入一定的代码,用来设置和检测堆栈上设置的特定数字,以确认是否有bof攻击发生。同时GCC中的编译器有堆栈保护技术也会适使得注入到堆栈上的shellcode无法执行而达到保护的目的。因此要想实验成功进行,须对环境进行手工设置。(x32环境)
apt-cache search execstack
apt-get install execstack
execstack --help
/proc/sys/kernel/randomize_va_space=0 //关闭地址随机化
execstack -s pwn1 //设置堆栈可执行
execstack -q pwn1 //查询文件的堆栈是否可执行
(三)输入perl -e 'print "\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\x4\x3\x2\x1\x00"' > input_shellcode
构造攻击buf(最后一个字符不能是\x0a,因为相当于回车,这样接下来的实验就做不了)
(四)重新打开一个新的终端窗口注入这段攻击buf(但是输入指令回车后先不要回车,之前因为手贱不小心点了回车以至于做了好几次才成功= =。)
(cat input_shellcode;cat) | ./5223pwn1
(五)再打开第一个终端,查找进程5223pwn1的id号:
可以看见进程ID是3937,打开gdb进行调试,foo反汇编:
(六)在ret函数这里设置断点,查看注入buf的内存地址,分析之前猜测的返回地址位置是否正确以及shellcode的地址
最后可以看到应该将地址修改为0xffffd310
(七)将返回地址修改为重新注入,失败了,重复之前的步骤,查看进程id,进行gdb调试:
(八)重新注入,成功:
Retuen-to-libc实践
基础知识:
·缓冲区溢出攻击的原理使得我们在实施时通常首先要将恶意代码注入目标漏洞程序中,通常攻击者需要将此攻击代码置于堆栈中。于是为了阻止此种类型的攻击,缓冲区溢出防御机制采用了非执行堆栈技术,这种技术使得堆栈上的恶意代码不可执行。
·为了避开非执行堆栈技术,出现了 return-into-libc 攻击,这种攻击是缓冲区溢出的变体,它的实施不需要栈就可以执行,甚至不需要注入新的代码,取而代之的是重用漏洞程序中已有的函数完成攻击,让漏洞程序跳转到已有的代码序列。实施攻击时攻击者仍然可以用恶意代码的地址来覆盖程序函数调用的返回地址,并传递重新设定好的参数使其能够按攻击者的期望运行。
实践过程:
(一)首先在kali虚拟机上添加一个新的用户:
(二)环境需要32位,因此需要事先进行安装,安装好后进入32位环境,进入bash,关闭地址随机化,并且把/bin/sh指向zsh:
(三)漏洞程序代码如下,并且将c文件保存在/tmp目录下:
(四)编译代码,fno-stack-protector
关闭阻止缓冲区溢出的栈保护机制,并设置给该程序的所有者以suid权限,可以像root用户一样操作:
(五)getenvaddr.c代码如下,该程序用于读取环境变量:
(六)exploit程序代码如下,通过修改该程序里的地址,结合5223retlib程序产生漏洞来实现攻击:
(七)获取 BIN_SH 地址为0xffffdf2a
(八)在root下编译运行程序:
(九)gdb调试exploit程序获取system
和exit
地址,分别为0xf7e33850
和0xf7e276c0
(十)将上述获取到的三个地址对exploit程序进行修改:
(十一)成功:
20145223 杨梦云 《网络对抗》shellcode实验+return-to-libc实验的更多相关文章
- 20145223 杨梦云 《网络对抗》 Web安全基础实践
20145223 杨梦云 <网络对抗> Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御 **原理**:SQL注入攻击是通过构建特殊的输入作为参数传入web应用程 ...
- 20145223 杨梦云 《网络对抗》 Web基础
20145223 杨梦云 <网络对抗> Web基础 1.实验后回答问题 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分:(1) 表单标签:这里面包含了处理表 ...
- 20145223 杨梦云 《网络对抗》 MSF基础应用
20145223 杨梦云 <网路对抗> MSF基础应用 1.实验后回答问题:用自己的话解释什么是exploit,payload,encode (1)百度百科上说Exploit 的英文意思就 ...
- 20155313 杨瀚 《网络对抗技术》实验九 Web安全基础
20155313 杨瀚 <网络对抗技术>实验九 Web安全基础 一.实验目的 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.基础问题回答 1.SQL注入攻 ...
- 20155313 杨瀚 《网络对抗技术》实验八 Web基础
20155313 杨瀚 <网络对抗技术>实验八 Web基础 一.实验目的 1.Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含 ...
- 20155313 杨瀚 《网络对抗技术》实验五 MSF基础应用
20155313 杨瀚 <网络对抗技术>实验五 MSF基础应用 一.实验目的 本实验目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.一个主动 ...
- 2018-2019-2 20165232《网络对抗技术》Exp1 缓冲区溢出实验
2018-2019-2 20165232<网络对抗技术>Exp1 缓冲区溢出实验 实验点1:逆向及Bof基础实践 实践任务 用一个pwn1文件. 该程序正常执行流程是:main调用foo函 ...
- 2018-2019-2 20165225《网络对抗技术》Exp1 缓冲区溢出实验
2018-2019-2 20165225<网络对抗技术>Exp1 缓冲区溢出实验 声明 虽然老师在邮箱中要求要把虚拟机名改为个人名字缩写,但是我的kali好像不是很听话...重启数次也没用 ...
- 20145307陈俊达《网络对抗》shellcode注入&return to libc
20145307陈俊达<网络对抗>shellcode注入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将 ...
随机推荐
- WPF 资源字典
使用好处:存储需要被本地话的内容(错误消息字符串等,实现软编码),减少重复的代码,重用样式,实现多个项目之间的共享资源;修改一个地方所有引用的地方都会被修改,方便统一风格; 使用方法,归纳起来主要有下 ...
- JS实现队列
JS实现队列: 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾 ...
- [android] 天气app布局练习(二)
主要练习一下GridView MainActivity.java package com.example.weatherreport; import java.util.ArrayList; impo ...
- java——程序的导出与导入
导出: 选择项目,右击选择 最下面的properties——Resource——Location,就是你的项目所在地, 找到文件所在,拷贝到你的U盘中(或者直接点击项目直接拖到桌面)完成复制 导入: ...
- 提示"No 'Access-Control-Allow-Origin' header"及Spring 中解决跨域问题
问题描述 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://12 ...
- Excel批量生成条形码
项目要求需要将信息做成条形码的形式,以便通过手持设备直接查看信息,因本次项目信息为固定信息,不需随机生成,故采用本方法: 代码随机生成二维码暂时没有接触,后续有时间会研究 步骤: 1.新建 Excel ...
- input的属性用法介绍
Input表示Form表单中的一种输入对象,其又随Type类型的不同而分文本输入框,密码输入框,单选/复选框,提交/重置按钮等,下面一一介绍. 1,type=text 输入类型是text,这是我们见的 ...
- oauth2.0授权码模式详解
授权码模式原理 授权码模式(authorization code)是功能最完整.流程最严密的授权模式.它的特点就是通过客户端的后台服务器,与"服务提供商"的认证服务器进行互动. 它 ...
- CSS3,transform3D立体可拖拽正方体实现原理
---恢复内容开始--- 今天咱们来说一下,CSS中的3D效果 .如果你把transform真的掌握的和纯熟的话,就可以直接通过CSS做出很多很炫酷的效果,甚至.轮播图和选项卡都可以通过CSS来做,咱 ...
- AdobeCS3DesignPremiumChs_Greendown.cn使用注册机激活失败重新激活操作方法
解决Adobe Acrobat 9 Pro序列号无效/重新激活方法 1.删除C:\Program Files\Common Files\Adobe\Adobe PCD\cache\cache.db和C ...