一、题目

shellcode广泛用于许多涉及代码注入的攻击中。编写shellcode是相当有挑战性的。虽然我们可以很容易地从互联网上找到现有的shellcode,但是能够从头开始编写我们自己的shellcode总是令人兴奋的。shellcode中涉及到几种有趣的技术。本实验室的目的是帮助学生理解这些技术,以便他们能够编写自己的shellcode。

编写shellcode有几个挑战,一个是确保二进制文件中没有0x00,另一个是找出命令中使用的数据的地址。第一个挑战不是很难解决,有几种方法可以解决它。第二个挑战的解决方案导致了编写外壳代码的两种典型方法。在一种方法中,数据在执行期间被推入堆栈,因此可以从堆栈指针获得它们的地址。在第二种方法中,数据存储在代码区域中,就在调用指令之后,因此在调用调用函数时,其地址被推入堆栈(作为返回地址)。两种解决方案都非常优雅,我们希望学生能够学习这两种技术。

二、过程

一、Task 1
(一)task 1.a
1.使用nasm编译上面的汇编代码(mysh.s),这是一个针对Intelx86和x64架构的汇编器和解汇编器。一旦我们得到了对象代码mysh.o,如果我们想生成可执行的二进制文件,我们可以运行链接器程序ld,这是编译的最后一步。-melfi386选项意味着生成32位ELF二进制文件。在此步骤之后,我们将得到最终的可执行代码mysh。如果我们运行它,我们可以得到一个外壳。在运行mysh之前和之后,我们使用echo$$打印出当前外壳的进程id,所以我们可以清楚地看到mysh确实启动了一个新的外壳。

2.在攻击期间,我们只需要壳码的机器代码,而不是一个独立的可执行文件,它包含除实际机器代码以外的数据。在技术上,只有机器代码被称为壳码。因此,我们需要从可执行文件或对象文件中提取机器代码。我们使用-Mintel选项在Intel模式下生成组装代码。

3.使用xxd命令打印出二进制文件的内容,能够从打印输出中找到壳码的机器代码。

4.使用外壳代码来攻击代码。复制从xxd命令得到的任何东西并粘贴到代码中。

5.运行convert.py文件,得到结果如下。打印出可以在攻击代码中包含的以下Python代码。它将外壳代码存储在一个Python数组中。



(二)task 1.b
此任务,不允许向字符串添加任何冗余/,即该命令的长度必须为9字节(/bin/bash)。还需要显示代码中没有零。把h###先左移三位,再右移三位。修改如下,得到结果如下:

(三)task 1.c
1.修改mysh.s文件,argv数组应该有四个元素:argv[3] = 0 ;argv[2] = “ls -la” ;argv[1] = “-c” ;argv[0] = “/bin/sh”。所有这些元素都需要在堆栈上构造。运行以下命令,该命令使用/bin/sh来执行“ls-la”命令。


二、Task 2: Using Code Segment
1.修改mysh2.s,得到结果


三、Task 3: Writing 64-bit Shellcode

网络攻防技术——shellcode编写相关推荐

  1. 网络攻防技术-Lab5-shellcode编写实验(SEED Labs – Shellcode Development Lab)

    网络攻防技术实验,实验环境.实验说明.实验代码见 Shellcode Development Lab Task 1: Writing Shellcode a: The Entire Process 1 ...

  2. 2018-2019-2 20189215 《网络攻防技术》第九周作业

    教材<网络攻防技术>第九.十章学习 第9章 恶意代码安全攻防 9.1 恶意代码基础知识 恶意代码是指使计算机按照攻击者的意图执行以达到恶意目标的指令集.类型包括:计算机病毒.蠕虫.恶意移动 ...

  3. 网络攻防技术(摆烂一天)

    网络攻防技术非常基础 1. 信息采集 信息采集的重点概念: 信息采集是黑客为了更有效的实施攻击而在攻击前对被攻击目标进行探测活动(信息渗透的过程) 信息采集是渗透重要的一部分:知道的越多就可能知道的更 ...

  4. 20169205 2016-2017-2 《网络攻防技术》第7周学习总结

    20169205 2016-2017-2 <网络攻防技术>第7周学习总结 教材学习内容总结 课本第七章主要围绕windows操作系统安全攻防技术进行讲述,教材中主要涉及的攻击内容如下: W ...

  5. 2018-2019-2 20165212《网络攻防技术》Exp5 MSF基础应用

    2018-2019-2 20165212<网络攻防技术>Exp5 MSF基础应用 攻击成果 主动攻击的实践 ms17010eternalblue payload windows/x64/m ...

  6. 2017-2018-2 20179205 《网络攻防技术与实践》第八周作业

    <网络攻防技术与实践>第八周学习总结 教材第八章<Linux操作系统安全攻防>学习总结 本章通过介绍Linux的结构和安全机制,引出了对Linux系统的攻击过程,包括首先从远程 ...

  7. 网络攻防技术(郑大信安个人总结版)

    网络攻防技术(郑大信安个人总结版) 目录 第1部分 绪论 2 第2部分 网络脆弱性分析 3 第3部分 网络侦察 5 第4部分 网络扫描 7 第5部分 拒绝服务攻击 11 第6部分 计算机木马 14 第 ...

  8. 2017-2018-2 20179305《网络攻防技术》第二周作业

    Q1 国内外著名黑客介绍 1.国内著名黑客黄鑫简介 黄鑫,网名木马冰河,毕业于西安电子科技大学,职业是网络安全网站"安全焦点"冰河木马软件的创作者. 99年,木马虽然已经在黑客中间 ...

  9. 2018-2019-2 20189221 《网络攻防技术》第六周作业

    2018-2019-2 20189221 <网络攻防技术>第六周作业 视频学习(21-25) KaliSecurity-密码攻击之在线攻击工具 1.Cewl 可以通过爬行网站获取关键信息创 ...

  10. 20189216 《网络攻防技术》第六周作业

    教材和视频学习总结 一.教材内容学习总结 课本第五章主要围绕TCP/IP网络协议攻击技术进行讲述,教材中主要涉及的攻击内容如下: 网络攻击基本模式: 截获 中断 篡改 伪造 网络层协议攻击手段 IP源 ...

最新文章

  1. mysql中Bname表示什么_《MY SQL实用教程》期末考试题
  2. 使用urllib2简单爬取并保存内涵吧内涵段子指定分页的的描述信息
  3. englishpod主持人对话文本_Englishpod 69 | 主持人文本讲解 | How Would You Like Your Eggs?...
  4. Linux内核链表 内存屏障,为什么需要内存屏障
  5. RabbitMQ是什么东西?
  6. spring 基于java的配置
  7. unity添加对象实例_在Unity中,如何通过值复制一个GameObject,以便在实例化之前修改它?...
  8. 特斯拉已撤回德国电池工厂建厂补贴申请 原有望获得近13亿美元
  9. python4k高清图片_第一次接触,尝试用python抓取国外4k高清图像数据,真方便
  10. ajax无法访问,Ajax不能跨域访问的解决方案
  11. RocketMQ源码-基于Netty的通信层设计
  12. Java开发 明华usbkey_UsbKey开发文档
  13. segue跳转_使用SwiftUI的Segue Shenanigans
  14. 1999.00 php,CBA20周年之1999-00赛季-前卫先合并后解散 八一5连冠
  15. 产品之路第四年的再思考
  16. linux+创建一个v文件共享,win10与Ubantu双系统:Linux下开启FTP服务器与创建无线热点(实现文件共享)...
  17. 《C#高级编程第6版》 读书笔记 (张迅雷闪击C#系列)
  18. HihoCoder - 1272 买零食
  19. http,https,TCP,UDP,apache 的ab,压测工具
  20. SwinUNet2022

热门文章

  1. 威feng网站的aes算法破解
  2. ITextSharp 使用
  3. K3 Cloud 常用数据表整理
  4. Echarts基本图表
  5. TCL语言中的执行顺序
  6. SQL数据库注入防范 ASP.NET Globle警告
  7. 【语义分割—SegNet】SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
  8. 家用电器插头插座外壳防冲击等级试验——IK摆锤冲击试验装置
  9. 不要错过!第十一届CDA考试Level Ⅰ优秀考生采访
  10. qt 部署 错误_Qt 5.9 安装过程报错现象及解决方案