20144303石宇森《网络对抗》注入shellcode和Return-to-libc攻击
20144303石宇森《网络对抗》PC平台逆向破解
实验1:shellcode注入
实验基础
1、Linux下有两种基本构造攻击buf的方法:retaddr+nop+shellcode
,nop+shellcode+retaddr
。我们采用anything+retaddr+nops+shellcode
的方法。
2、实验的目标是找到返回地址的位置和shellcode的地址。然后通过修改返回地址使其自动执行shellcode
3、实验前通过命令:apt-get install exestack
安装exestack
4、修改一些设置:
root@KaliYL:~# execstack -s pwn1//设置堆栈可执行
root@KaliYL:~# execstack -q pwn1//查询文件的堆栈是否可执行
X pwn1
root@KaliYL:~# more /proc/sys/kernel/randomize_va_space
2
root@KaliYL:~# echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
root@KaliYL:~# more /proc/sys/kernel/randomize_va_space
0
实验步骤
1、先用cp复制一个新的pwn1文件
2、修改设置
3、构造一个shellcode作为输入
4、打开一个新的端口,用命令:(cat input_shellcode; cat) > ./20145221pwn1
注入这段攻击并执行文件
5、开启另一个终端,输入ps -ef | grep ./20144303
,查看进程的UID
6、进入gdb模式,然后输入attach UID
与进程进行连接
7、输入命令disassemble foo
对foo函数进行反汇编
8、在ret处设置一个断点
9、在端口下按回车执行一下程序,在gdb中输入c
10、查看此时寄存器esp中的值,这个地址就是函数的返回地址
11、输入quit退出gdb模式
12、重新构造shellcode,将01020304修改为shellcode的首地址0xffffd340
13、用xxd input_shellcode
查看输入
14、再次执行程序,完成攻击
实验2:Return-to-libc攻击
实验步骤:
1、输入sudo apt-get update
来更新软件源
2、使用命令sudo apt-get install lib32z1 libc6-dev-i386
安装软件
3、进入linux32位环境,然后将地址随机化关闭
4、进入bin目录下,通过命令ln -s zsh sh
将zsh指向sh
5、在tmp目录下,编译20144303retlib.c。retlib是一个漏洞程序,在fread函数中把40字节的badfile中的数据读取到了buffer里。但buffer只有12字节。所以会造成缓冲区溢出。
在编译retlib.c时,把这个程序设置为 SET-ROOT-UID 程序,程序的所有者就拥有了root权限
6、编译20144303getenvaddr.c。这个程序是用来读取环境变量的
7、编译20144303exploit.c。该程序用来进行攻击
8、用读取环境变量的函数20144303getenvaddr来获得BIN_SH的地址
9、在gdb中获取system和exit的地址分别为0xf7e2eb30
和0xf7e227e0
10、修改攻击函数20144303exploit.c中的三个地址的值。然后将之前编译生成的文件和运行生成的badfile
文件删掉。重新编译执行。
11、先执行程序20144303exploit,再执行20144303retlib。完成攻击,获得了root权限。
实验过程中遇到的问题:
1、在安装lib32readline-gplv2-dev时,出现了错误。但是对后面的实验没有什么影响....
2、第一遍做实验时,通过getenvaddr函数获取BIN_SH的地址时出现了错误。得到的BIN_SH的地址为0x8,所以最后实验失败。
后来重新检查了代码,发现漏洞程序retlib中出现了错误,修改后再次编译,查看BIN_SH的值就正确了。
感想反思
本次两个实验都是在关闭了地址随机化的前提下完成的,比较好奇假如不能关闭计算机的地址随机化,又该怎样进行攻击呢?另外,虽然完成了实验,得到了实验结果,但是对三个程序的代码还不是很理解。接下来会对这些东西进行研究。路漫漫求修远兮吾将上下而求索
20144303石宇森《网络对抗》注入shellcode和Return-to-libc攻击的更多相关文章
- 20144303石宇森《网络对抗》Web安全基础实践
20144303石宇森<网络对抗>Web安全基础实践 实验后问题回答 SQL注入攻击原理,如何防御: SQL攻击时通过在输入框中输入语句,构造出SQL命令,把这段命令注入到表单中,让后台的 ...
- 20144303石宇森 《网络对抗》 WEB基础实践
20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...
- 20144303石宇森《网络对抗》MSF基础应用
20144303石宇森<网络对抗>MSF基础应用 实验后回答问题 一.解释什么是exploit,payload,encode: 我认为exploit就是一个简单的攻击指令,就是对配置所有设 ...
- 20144303石宇森《网络对抗》逆向及Bof基础
20144303石宇森<网络对抗>逆向及Bof基础 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回 ...
- 20144303石宇森 《Java程序设计》第2周学习总结
---恢复内容开始--- 20144303 <Java程序设计>第2周学习总结 教材学习内容总结 一.类型: 1.Java可以区分为基本类型和类类型.类类型也称作参考类型. 2.Java中 ...
- 20145215《网络对抗》shellcode注入&Return-to-libc攻击深入
20145215<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻 ...
- 20145227鄢曼君《网络对抗》shellcode注入&Return-to-libc攻击深入
20145227鄢曼君<网络对抗>shellcode注入&Return-to-libc攻击深入 shellcode注入实践 shellcode基础知识 Shellcode实际是一段 ...
- 20145317《网络对抗》shellcode注入&Return-to-libc攻击深入
20145317<网络对抗>shellcode注入&Return-to-libc攻击深入 学习任务 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻 ...
- 20145208 蔡野《网络对抗》shellcode注入&Return-to-libc攻击深入
20145208 蔡野<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode的获取代码 我使用了许心远同学博客中的代码 ...
随机推荐
- iOS开发tableView去掉顶部上部空表区域
tableview中的第一个cell 里上部 有空白区域,大概64像素 在viewDidLoad中加入如下代码 self.automaticallyAdjustsScrollViewInsets = ...
- 棋盘问题---poj1321(dfs)
http://poj.org/problem?id=1321 由于搜索是原来写的,而集训的时候没来所以只能现在补补咯-_- 简单的深搜 #include<stdio.h> #include ...
- PULL解析学习
学习过程 安卓中有三种对XML解析的方式,这个众所周知,DOM,SAX,PULL 其中被推荐的方法是PULL,说是非常简单,但从一开始接触就觉得比较迷惑,总是云里雾里的感觉,甚至在自己写出了一个能 ...
- hibernate注解(一)JoinColumn
@Entity @Table(name="t_group") public class Group { private int id; private String name; p ...
- mysql 内置功能 触发器 实验
#准备表命令表 CREATE TABLE cmd ( id INT PRIMARY KEY auto_increment, ), priv ), cmd ), sub_time datetime, # ...
- mysql 内置功能 事务 介绍
事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性 创建数据库db12 create database db12 charset=utf ...
- Java多线程的下载器(1)
实现了一个基于Java多线程的下载器,可提供的功能有: 1. 对文件使用多线程下载,并显示每时刻的下载速度. 2. 对多个下载进行管理,包括线程调度,内存管理等. 一:单个文件下载的管理 1. 单文件 ...
- Bootstrap 网格系统(Grid System)的工作原理 - 媒体查询
媒体查询 媒体查询是非常别致的"有条件的 CSS 规则".它只适用于一些基于某些规定条件的 CSS.如果满足那些条件,则应用相应的样式. Bootstrap 中的媒体查询允许您基于 ...
- 8款世界级Webmail工具推荐
Webmail软件或者基于Web的电子邮件包含两个重要方面:Webmail客户端和Webmail提供商.Webmail客户端负责通过本地或远程服务器使用POP3和SMTP协议发送和接收电子邮件.Web ...
- 2018-2019-2 网络对抗技术 20165324 Exp4:恶意代码分析
2018-2019-2 网络对抗技术 20165324 网络对抗技术 Exp4:恶意代码分析 课下实验: 实践目标 是监控你自己系统的运行状态,看有没有可疑的程序在运行. 是分析一个恶意软件,就分析E ...