20145316许心远《网络对抗》第一次实验拓展:shellcode注入+return-to-libc
shellcode注入实践
编写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
- Linux下有两种基本构造攻击buf的方法:
retaddr+nop+shellcode
,nop+shellcode+retaddr
。因为retaddr在缓冲区的位置是固定的,shellcode要不在它前面,要不在它后面。简单说缓冲区小就把shellcode放后边,缓冲区大就把shellcode放前边。 实践证明
nop+shellcode+retaddr
对于pwn1不是成功的payload,但我们依然决定往这个坑里跳一下。手动微笑。payload结构为nop+shellcode+retaddr
1.编写payload
特别提醒:最后一个字符千万不能是\x0a。\x0a相当于回车键,若回车了下面的操作就做不了了。
2.打开一个新终端(终端2),将payload注入到pwn1中(此处有天坑!!!一定要仔细!!!)
- 敲好
(cat input_shellcode;cat) | ./pwn1
后这里有三种状态,这三种状态中只有一种才能让接下来的实验顺利进行。
- 答案就是第一种。我做实验的时候被这里坑住了很久,一切都正常但到后面查看寄存器的时候上翻了几十行就是找不到shellcode,问题就出在这里,大家在这里千万不要手滑多敲回车(到下面提示的地方再敲),要不然都得重新来过。
保持终端2中程序的运行状态。
3.终端1中查询pwn1进程的UID
4.gdb调试,进入对应UID端口
5.反汇编,设置断点
注意:continue执行的时候,在
终端2
敲一下回车,终端1中的continue暂停在断点处。6.往上查询找到shellcode,同时找到要覆盖的地址
要覆盖的地址(返回地址)是
0xffffd300
7.更改payload,测试,不成功
用
0xffffd300
替换0x01020304
。
payload结构为retaddr+nop+shellcode
- 重新构造payload
成功
return-to-libc实验
配置32位linux环境
- sudo apt-get update
- sudo apt-get install lib32z1 libc6-dev-i386
sudo apt-get install lib32readline-gplv2-dev
添加新用户
因为我们最后的是要通过看“是否取得root权限”来判断成功与否的,所以攻击对象不能是root用户,要创建一个新用户。
设置实验背景
进入32位环境,关闭地址随机化,设置zsh程序代替/bin/bash
在/tmp文件夹下编写漏洞程序retlib
在root用户下编译,关闭栈保护机制。设置SET-UID
在/tmp文件夹下编写getenvaddr和exploit
- getenvaddr用来读取环境变量
- exploit用来攻击
同样是在root用户下编译
获取地址并修改exploit
- 获取BIN_SH地址
- 进入gdb设置断点,调试运行获取system和exit地址
- 将上述三个地址修改入exploit.c文件
删除之前生成的exploit和badfile(我的exploit因为有权限无法命令行删除,索性直接在places下面的图形化界面tmp文件夹里手动删除)
攻击,成功
先运行exploit再运行retlib即可获得root权限,成功!
20145316许心远《网络对抗》第一次实验拓展:shellcode注入+return-to-libc的更多相关文章
- 20145316许心远《网络对抗》EXP7网络欺诈技术防范
20145316许心远<网络对抗>EXP7网络欺诈技术防范 实验后回答问题 通常在什么场景下容易受到DNS spoof攻击 公共共享网络里,同一网段可以ping通的网络非常容易被攻击 在日 ...
- 20145316许心远《网络对抗》Exp6信息搜集与漏洞扫描
20145316许心远<网络对抗>Exp6信息搜集与漏洞扫描 实验后回答问题 哪些组织负责DNS.IP的管理? 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.D ...
- 20145316许心远《网络对抗》MSF基础应用
20145316许心远<网络对抗>MSF基础应用 实验后回答问题 用自己的话解释什么是exploit,payload,encode. exploit:顾名思义就是攻击嘛,因为是个动词,所以 ...
- 20145316许心远《Java学习笔记(第8版)》课程总结
20145316许心远<Java学习笔记(第8版)>课程总结 每周读书笔记链接汇总 ▪ 第一周读书笔记 ▪ 第二周读书笔记 ▪ 第三周读书笔记 ▪ 第四周读书笔记 ▪ 第五周读书笔记 ▪ ...
- 20145316许心远《Java学习笔记》第三周总结
20145316许心远<Java程序设计>第3周学习总结 教材学习内容总结 一.定义类: 类定义时使用class关键字 如果要将x绑定到新建的对象上,可以使用"="制定 ...
- 网络对抗第一次实验——PC平台逆向破解(5)M
网络对抗第一次实验--PC平台逆向破解(5)M 实践一 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 操作步骤: 获取实验用文件pwn1,复制,复制出来的文件改名为20155 ...
- 20145316许心远《Java程序设计》第4周学习总结
20145316许心远<Java程序设计>第4周学习总结 教材学习内容总结 6.继承与多态 1.继承共同行为 * 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需 ...
- 20145203盖泽双《网络对抗技术》拓展:注入:shellcode及return-into-libc攻击
20145203盖泽双<网络对抗技术>拓展:注入:shellcode及return-into-libc攻击 一.注入:shellcode 1.编写一段用于获取Shellcode的C语言代码 ...
- 20145307陈俊达《网络对抗》shellcode注入&return to libc
20145307陈俊达<网络对抗>shellcode注入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将 ...
随机推荐
- spring jdbcTemplate 操作存储过程
Spring的SimpleJdbcTemplate将存储过程的调用进行了良好的封装,下面列出使用JdbcTemplate调用Oracle存储过程的三种情况: 一.无返回值的存储过程调用 1.存储过程代 ...
- RabbitMQ安装详解(centos6.8)(转自:http://www.cnblogs.com/zhen-rh/p/6862350.html)
1.下载rabbitmq安装包 2.安装erlang a.安装Erlang Solutions仓库到你的系统(目的在于让你可以使用yum安装到最新版本的erlang, 如果不设置, yum安装的erl ...
- 慕课学习--DNS的作用
因为相对于32位的IP地址,人对域名更加敏感,也更容易记忆.所以一般都是把IP地址转化为域名进行网页的访问. DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映 ...
- Redis+Keepalived实现高可用
使用redis哨兵可以在主服务器出现故障的时候自动切换主从,但是从服务器的IP不同于原主服务器的IP还需要在客户端手动修改IP才能生效 下面使用keepalived实现VIP自动漂移 keepaliv ...
- pcl学习笔记(二):点云类型
不同的点云类型 前面所说的,pcl::PointCloud包含一个域,它作为点的容器,这个域是PointT类型的,这个域是PointT类型的是pcl::PointCloud类的模板参数,定义了点云的存 ...
- Chainer的初步学习
人们都说Chainer是一块非常灵活you要用的框架,今天接着项目里面的应用,初步接触一下,涨涨姿势,直接上源码吧,看着好理解.其实跟Tensorflow等其他框架都是一个套路,个人感觉更简洁了. & ...
- Linux:获取当前进程的执行文件的绝对路径
摘要:本文介绍Linux的应用程序和内核模块获取当前进程执行文件绝对路径的实现方法. 注意:使用此方法时,如果执行一个指向执行文件的链接文件,则获得的不是链接文件的绝对路径,而是执行文件的绝对路径. ...
- Why should we typedef a struct so often in C? - Stack Overflow
https://stackoverflow.com/questions/252780/why-should-we-typedef-a-struct-so-often-in-c As Greg Hewg ...
- abi-api, arm target triplet https://en.wikipedia.org/wiki/ARM_architecture
GNU软件用target triplet来描述工作平台,target triplet是一种规范化的名称,形如cpu-vendor-os(where os can be ‘system’ or ‘ker ...
- sum统计某字段满足某种条件的记录数
(1)count来查询: 查询 lw_devices_type_relation 表中满足is_standard为1的数量. (2)sum来查询: ) from lw_devices_type_rel ...