20145318《网络对抗》注入shellcode及Return-to-libc
20145318《网络对抗》注入shellcode及Return-to-libc
注入shellcode
知识点
- 注入shellcodeShellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起,毕竟Shellcode只对没有打补丁的主机有用武之地。漏洞利用中最关键的是Shellcode的编写。
实践过程
- 写一段shellcode,保存为20145318shellcode.c

安装execstack

- 设置堆栈可执行,并查询堆栈是否可执行,以便shellcode在堆栈上可以执行

- 关闭地址随机化

- 用more /proc/sys/kernel/randomize_va_space来查询地址随机化是开启状态还是关闭状态,`2`表示开启,`0`表示关闭。
- 采取nop+shellcode+retaddr方式构造payload(\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置,需要将它改为shellcode的地址)

- 注入攻击buf

- 再打开一个终端,用GDB调试5318pwn进程,找到进程号2906

- 启动gdb调试进程,设置断点,查看注入buf的内存地址

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

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

- 成功

Return-to-libc攻击
sudo apt-get update

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

- 进入32位linux环境,并使用bash

- 关闭地址空间随机化

- 使用另一个shell程序(zsh)代替/bin/bash,设置zsh程序

- 在编译时手动设置栈不可执
- 编写retlib.c

- 编译程序,并设置
SET-UID

- 需要用到一个读取环境变量的程序:
getenvaddr.c

- 编译

- 编写
exploit.c

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

gdb获得system和exit地址- 编译

- gdb,得到
system和exit的地址

- 修改
exploit.c文件,填上刚才找到的内存地址

- 删除刚才调试编译的exploit程序和badfile文件,重新编译修改后的
exploit.c

- 先运行攻击程序exploit,生成了badfile文件,再运行漏洞程序retlib,可见攻击成功,获得了root权限


20145318《网络对抗》注入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实际是一段代码,但却作为数据发送给受攻击 ...
随机推荐
- hihocoder 1305 - 区间求差 - [hiho一下152周][区间问题]
题目链接:https://hihocoder.com/problemset/problem/1305 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个区间集合 A ...
- python的笔记
np.argsort(x):返回数据x从小到大的索引值,记住是一个索引值.当你想获取从小到大的数据的时候,用到这个 data[::-1]:对数据data进行倒转 a=[0,1,2,3,4,5] a[: ...
- Centralized Cache Management in HDFS
Overview(概述) Centralized cache management in HDFS is an explicit caching mechanism that allows users ...
- 对position的认知观
position :absolute 认识以前有的理解不正确,以为没有设置left,top 与设置left :0,top : 0是一样的,现在认识为,错误! 没有设置的时候,该absolute元素{由 ...
- Connections in Galaxy War----zoj3261
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3261 题意:有n个星球编号为0—n-1;能量分别为p[i]:有 ...
- 洛谷P2657 windy数 [SCOI2009] 数位dp
正解:数位dp 解题报告: 传送门! 这题一看就是个数位dp鸭,"不含前导零且相邻两个数字之差至少为2"这种的 然后就直接套板子鸭(板子戳总结,懒得放链接辣QAQ 然后就是套路 然 ...
- Innodb引擎状态查看
我们的MySQL数据库内的表一般都是Innodb表类型的. mysql>show engine innodb status; (低版本用: show innodb status;) === ...
- 包含.h就可以用其对应的函数
//callee.h 被调用者 #pragma once void display(); //展示函数 //callee.cpp 被调用者 #include "callee.h" ...
- Scala中的数组和集合操作
package test /* 1.在scala集合中,Iterable是共同的Trait,Iterable要求继承者实现一些共同的方法,例如元素的遍历 * 2.Array是scala基础的数据结构, ...
- [py]flask实现用户cmdb
人最难做到的就是跟自己学习, 总是学习别人的, 沉淀, 过一段时间忘了刚学到的, 在向别人学习, 而非看看自己的沉淀, 殊不知, 世界上最亲近,最默契的人是自己. 用户cmdb功能概述 之前学flas ...