缓冲区溢出的攻击思路已经很清晰了:首次是找到对准EIP的位置,然后覆盖 EIP跳到注入的shellcode 里执行。

前面例子只是简单展示了shellcode长什么样子,事实上shellcode是攻击的核心所在。漏洞触发后执行的操作完全由shellcode来决定,因此学会编写shellcode是黑客的基本功。

下面从Wiki摘录这来的定义:

In computer security, a shellcode is a small piece of code used as the payload in the exploitation of a software vulnerability. It is called "shellcode" because it typically starts a command shell from which the attacker can control the compromised machine, but any piece of code that performs a similar task can be called shellcode.

翻译过来大意是:shellcode通常是软件漏洞利用过程中使用一小段机器代码,之所以称为shellcode,是因为它启动一个命令界面,让攻击控制整个机器。

在前面攻击实践中,已出现了一份shellcode,样子长得如下:

\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb3\x01\x83\xc4\x1d\x89\xe1\xb2\x05\xb0\x04\xcd\x80\xb0\x01\xb3\x01\xfe\xcb\xcd\x80\x46\x55\x43\x4b\x0a

shellcode表面看起来是一种能起死回生的神秘数字,实际它只是一段机器码而已。那如何编写shellcode呢,通常有下面几个过程:

1)  使用C语言描述shellcode要完成的逻辑功能

2) 将C语言翻译成汇编语言

3) 编译和测试

4) 测试通过后提取机器码

由于很多缓冲区漏洞是由于使用无长度限定的字符串函数(如strcpy, sprintf等)造成的,所以shellcode不能有0字节,否则会出现填充失败;另外由于不同漏洞的溢出长度是不同的,因此shellcode尽量短小。

实际上,当攻击客利用漏洞之后,利用shellcode的事情主要有如下几大类:

1)提升权限为root,即调用suid(0)

2)  启开bash,全面控制系统,即调用execve("/bin/bash, NULL, NULL);

3)  打开网络端口,让攻击者连接该端口进行控制

4)反向连接攻击者提供的端口,进行反向控制。

============= 回顾一下本系列文章 ==============
  • 缓冲区溢出攻击实践
  • 缓冲区溢出攻击原理分析
  • 初识shellcode
  • 如何编写本地shellcode
  • 编写shellcode测试工具
  • 使用ret2reg攻击绕过地址混淆
  • 使用ret2libc攻击方法绕过数据执行保护

什么是 shellcode相关推荐

  1. 了解黑客的关键工具---揭开Shellcode的神秘面纱

    2019独角兽企业重金招聘Python工程师标准>>> ref:  http://zhaisj.blog.51cto.com/219066/61428/ 了解黑客的关键工具---揭开 ...

  2. 实战之网马解密之shellcode篇

    今天上卡卡社区发现里面发了个网马解密的链接,呵呵 顺便试试看能解出来不.呵呵.  相信各位已经对网马有点了解了吧.一般网马都是加密了的.关于什么是网马以及怎么防止网马也不是本文的重点.本文是实战she ...

  3. Shellcode开发辅助工具shellnoob

    Shellcode开发辅助工具shellnoob Shellcode开发的过程中会遇到很多繁杂的工作,如编译.反编译.调试等.为了减少这部分工作,Kali Linux提供了开发辅助工具shellnoo ...

  4. python加载shellcode免杀 简介

    目录 前言 0X00  基础概念 1. python ctypes模块介绍 2. dll动态链接库 3. pyinstaller 4. shellcode 5.关于windows defender 6 ...

  5. 渗透中poc、exp、payload与shellcode的区别

    PoC,全称"Proof of Concept",中文"概念验证",常指一段漏洞证明的代码. Exp,全称"Exploit",中文" ...

  6. shellcode中变形bindshell的实现

    最近学习<0day安全>一书 记录一下调试编码过程 书中环境XP VC6 本机的环境是server 2008 r2 x64  编译环境是vs2013 第一步: 首先是写一个win c版本的 ...

  7. [科普]浅入浅出Liunx Shellcode

    创建时间:2008-05-13 文章属性:原创 文章提交: pr0cess  (pr0cess_at_cnbct.org) 浅入浅出Liunx Shellcode /*---------------- ...

  8. linux 64位 shellcode,Linux Shellcode“你好,世界!”

    小编典典 注入此shellcode时,您不知道位置message: mov ecx, message 在注入的过程中,它可以是任何东西,但不会如此,"Hello world!\r\n&quo ...

  9. 20145317《网络对抗》shellcode注入Return-to-libc攻击深入

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

  10. 【笔记】shellcode相关整理

    0x01:shellcode定义 Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限.另外,Shellcode一般是作为数据发送给受攻击服务器 ...

最新文章

  1. springboot 学习笔记(三)
  2. linux ls命令 --time-style选项 日期时间格式控制
  3. ADO学习(十)DataGrid控件的使用
  4. php异步处理下载文件,异步处理Excel文件导入【流程图+PHP示例】
  5. mysql if语句后面执行两个语句_MySQL的if,case语句使用总结
  6. 红帽linux 竞争对手,为什么红帽不把CentOS当作竞争对手?
  7. 瑞克·李特的追寻 正是我们所需要做的!中国
  8. 搭建subversion 服务器,并自动部署项目
  9. linux nslookup 解析不到dns_内网智能DNS搭建
  10. java 7 update 79下载_java 7下载|java运行环境(JDK 7 Update 67)官方版下载 - 3322软件站
  11. AIML相关内容学习整理
  12. GO、Rust这些新一代高并发编程语言为何都极其讨厌共享内存?
  13. 金融计算机加权平均,什么是加权平均
  14. Bootstrap练习:百度登录框
  15. 安庆师范大学c语言程序设计,安庆师范大学计算机与信息学院欢迎你!
  16. MATLAB之绘图基础
  17. NandFlash驱动移植基础知识
  18. Lumiprobe/艾美捷——LumiMAG基因组DNA血液和口腔试剂盒
  19. Visio2010中设置线为直线
  20. Redis记录:Invalid argument during startup: Failed to open the .conf file

热门文章

  1. 计算机软件一般包括软件系统和,计算机软件系统一般包括系统软件和().
  2. 微软New Bing初体验:AI时代的搜索引擎(内含体验方法)
  3. 经验:几个985/211/普通院校的本科生/研究生高薪大数据学习全程记录,笔记心得,求职面试
  4. 新版有机食品标准下载GB/T 19630-2019国家标准
  5. Python语音基础操作--5.1自适应滤波
  6. html中单选怎么写,创建一个单选框的html代码是
  7. 内存快照:宕机后,Redis如何实现快速恢复?
  8. 前缀表达式详细解释以及代码展现
  9. 双层vector的运用细节
  10. 【联通】数据编排技术在联通的应用