20145310《网络对抗》注入shellcode及Return-to-libc
Shellcode注入
基础知识
- Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode的地址。Shellcode一般是作为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起,毕竟Shellcode只对没有打补丁的主机有用武之地。漏洞利用中最关键的是Shellcode的编写。
实践过程
首先写一段shellcode,保存为20145310shellcode.c

- 安装execstack

- 将环境设置为:堆栈可执行、地址随机化关闭
- 用
execstack -s 5310pwn命令来将堆栈设为可执行状态 - 用
execstack -q 5310pwn命令来查看文件pwn20145333的堆栈是否是可执行状态 - 用
more /proc/sys/kernel/randomize_va_space命令来查看地址随机化的状态 - 用
echo "0" > /proc/sys/kernel/randomize_va_space命令来关闭地址随机化

- 采取nop+shellcode+retaddr方式构造payload(\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置,需要将它改为shellcode的地址)

- 注入攻击buf

- 此时在第一个终端,用gdb来调试5310pwn进程,找到该进程的进程ID。

- 启动gdb调试进程,用
attach指令对该进程进行调试,设置断点,查看注入buf的内存地址

- 设置断点后,在另一个终端按回车,寻找返回地址,看到01020304表示返回地址的位置,shellcode加四字节为其地址

- 退出gdb,按anything+retaddr+nops+shellcode修改input_shellcode

- 执行5310pwn,成功

Return-to-libc攻击
- 配置环境,输入指令创建32位C语言可编译的环境
sudo apt-get update
sudo apt-get install lib32z1 libc6-dev-i386
- 进入32位linux环境,并使用bash

- 关闭地址随机化
sudo sysctl -w kernel.randomize_va_space=0
- 为了不让/bin/bash的防护程序起作用(为了防止shell攻击,程序被调用时会自动弃权),使用另一个shell程序(zsh)代替/bin/bash,设置zsh程序

- 在编译时手动设置栈不可执。在tmp文件夹下创建“retlib.c”文件,并编译设置SET-UID

- 我们在编译代码时需要用 “
–fno-stack-protector” 关闭GCC 编译器栈保护机制

- 在tmp文件夹下准备读取环境变量的程序“getenvaddr.c”,并编译。


- 把以下代码(攻击程序)保存为“exploit.c”文件,保存到 /tmp 目录下。

- 用刚才的 getenvaddr 程序获得 BIN_SH 地址。

gdb获得system和exit地址,编译,获得 system 和 exit 地址

- 修改 exploit.c 文件,填上内存地址

- 删除刚才调试编译的exploit程序和badfile文件,重新编译修改后的
exploit.c。 先运行攻击程序 exploit,再运行漏洞程序 retlib,攻击成功,获得 root 权限。

20145310《网络对抗》注入shellcode及Return-to-libc的更多相关文章
- 20145307陈俊达《网络对抗》shellcode注入&return to libc
20145307陈俊达<网络对抗>shellcode注入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将 ...
- 20145239杜文超《网络对抗》- shellcode注入&Return-to-libc攻击深入
20145239杜文超<网络对抗>- shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服 ...
- 20145210姚思羽《网络对抗》——shellcode注入& Return-to-libc攻击深入
20145210姚思羽<网络对抗>shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服务器 ...
- 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的获取代码 我使用了许心远同学博客中的代码 ...
- 20145326蔡馨熠《网络对抗》shellcode注入&Return-to-libc攻击深入
20145326蔡馨熠<网络对抗>shellcode注入&Return-to-libc攻击深入 准备一段shellcode 首先我们应该知道,到底什么是shellcode.经过上网 ...
- 20145301《网络对抗》shellcode注入&Return-to-libc攻击深入
20145301<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode是什么? Shellcode是指能完成特殊任务的 ...
- 20145303 刘俊谦《网络对抗》shellcode注入&Return-to-libc攻击深入
20145303 刘俊谦<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode实际是一段代码,但却作为数据发送给受攻击 ...
随机推荐
- Master Boot Record
https://en.wikipedia.org/wiki/Master_boot_record https://zh.wikipedia.org/wiki/主引导记录 A master boot r ...
- WordCount优化
Github 地址:chaosrings/wcPro 1.PSP2.1表格 psp 2.1 psp阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 10 Estimate 估计这 ...
- oracle数据迁移到mysql
今天遇到需求要把oracle的部分数据搬到mysql,用java代码抓数据,然后拼接成sql语句,然后用navicat执行sql脚本的方法,导入数据库. import oracle.jdbc.driv ...
- River Crossing---河南省第六届大学生程序设计竞赛
题目描述 Afandi is herding N sheep across the expanses of grassland when he finds himself blocked by a ...
- Service 的 onStartCommand(Intent, int, int) 返回值
(1)START_NOT_STICKY If the system kills the service after onStartCommand() returns, do not recreate ...
- python中操作mysql
import pymysql # 连接数据库 connect = pymysql.Connect( host='localhost', port=3306, user='root', passwd=' ...
- Linux文件目录介绍及文件颜色区别
文件颜色代表含义: 蓝色表示目录: 绿色表示可执行文件: 红色表示压缩文件: 浅蓝色表示链接文件: 白色表示其他文件: 黄色是设备文件,包括block, char, fifo. 常见目录解释 Linu ...
- iOS中Date和NString的相互转换
必须知道的内容 G: 公元时代,例如AD公元 yy: 年的后2位 yyyy: 完整年 MM: 月,显示为1-12 MMM: 月,显示为英文月份简写,如 Jan ...
- 003-Nginx 设置Header 获取真实IP
1.X-Forwarded-For的定义: X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项.它 ...
- a文件.o文件和.so文件有什么区别?
.o类似于windows的.obj .a是多个.o合在一起,用于静态连接. .so文件(shared object)类似于.dll文件.,用于动态连接.