!c99Shell v. 1.0 pre-release build #16!

Software: Apache/2.2.3 (CentOS). PHP/5.1.6 

uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44
EDT 2010 i686
 

uid=48(apache) gid=48(apache) groups=48(apache) 

Safe-mode: OFF (not secure)

/usr/share/doc/syslinux-3.11/sample/   drwxr-xr-x
Free 50.94 GB of 127.8 GB (39.86%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     mdiskchk.c (3.64 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* -*- c -*- ------------------------------------------------------------- *
 *   
 *   Copyright 2003-2004 H. Peter Anvin - All Rights Reserved
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
 *   Boston MA 02111-1307, USA; either version 2 of the License, or
 *   (at your option) any later version; incorporated herein by reference.
 *
 * ----------------------------------------------------------------------- */
/* $Id: mdiskchk.c,v 1.7 2004/12/30 21:57:12 hpa Exp $ */

/*
 * mdiskchk.c
 *
 * DOS program to check for the existence of a memdisk.
 *
 * This program can be compiled for DOS with the OpenWatcom compiler
 * (http://www.openwatcom.org/):
 *
 * wcl -3 -osx -mt mdiskchk.c
 */

#include <stdio.h>
#include <string.h>
#include <i86.h>        /* For MK_FP() */

typedef unsigned long  uint32_t;
typedef unsigned short uint16_t;
typedef unsigned char  uint8_t;

struct memdiskinfo {
  uint16_t bytes;        /* Bytes from memdisk */
  uint16_t version;        /* Memdisk version */
  uint32_t base;        /* Base of disk in high memory */
  uint32_t size;        /* Size of disk in sectors */
  char far * cmdline;        /* Command line */
  void far * oldint13;        /* Old INT 13h */
  void far * oldint15;        /* Old INT 15h */
  uint16_t olddosmem;
  uint8_t  bootloaderid;

  uint8_t _pad;

  /* We add our own fields at the end */
  int cylinders;
  int heads;
  int sectors;
};

struct memdiskinfo * query_memdisk(int drive)
{
  static struct memdiskinfo mm;
  uint32_t _eax, _ebx, _ecx, _edx;
  uint16_t _es, _di;
  unsigned char _dl = drive;
  uint16_t bytes;

  __asm {
    .386 ;
    mov eax, 454d0800h ;
    mov ecx, 444d0000h ;
    mov edx, 53490000h ;
    mov dl, _dl ;
    mov ebx, 3f4b0000h ;
    int 13h ;
    mov _eax, eax ;
    mov _ecx, ecx ;
    mov _edx, edx ;
    mov _ebx, ebx ;
    mov _es, es ;
    mov _di, di ;
  }
  
  if ( _eax >> 16 != 0x4d21 ||
       _ecx >> 16 != 0x4d45 ||
       _edx >> 16 != 0x4944 ||
       _ebx >> 16 != 0x4b53 )
    return NULL;

  memset(&mm, 0, sizeof mm);

  bytes = *(uint16_t far *)MK_FP(_es, _di);

  /* 27 is the most we know how to handle */
  if ( bytes > 27 )
    bytes = 27;

  _fmemcpy((void far *)&mm, (void far *)MK_FP(_es,_di), bytes);

  mm.cylinders = ((_ecx >> 8) & 0xff) + ((_ecx & 0xc0) << 2) + 1;
  mm.heads     = ((_edx >> 8) & 0xff) + 1;
  mm.sectors   = (_ecx & 0x3f);
  
  return &mm;
}

const char *bootloadername(uint8_t id)
{
  static const struct {
    uint8_t id, mask;
    const char *name;
  } *lp, list[] =
    {
      { 0x10, 0xf0, "LILO" },
      { 0x20, 0xf0, "LOADLIN" },
      { 0x31, 0xff, "SYSLINUX" },
      { 0x32, 0xff, "PXELINUX" },
      { 0x33, 0xff, "ISOLINUX" },
      { 0x34, 0xff, "EXTLINUX" },
      { 0x30, 0xf0, "SYSLINUX family" },
      { 0x40, 0xf0, "Etherboot" },
      { 0x50, 0xf0, "ELILO" },
      { 0x70, 0xf0, "GrUB" },
      { 0x80, 0xf0, "U-Boot" },
      { 0x00, 0x00, "unknown" }
    };

  for ( lp = list ; ; lp++ ) {
    if ( ((id ^ lp->id) & lp->mask) == 0 )
      return lp->name;
  }
}

int main(int argc, char *argv[])
{
  int d;
  int found = 0;
  struct memdiskinfo *m;

  for ( d = 0 ; d <= 0xff ; d++ ) {
    if ( (m = query_memdisk(d)) != NULL ) {
      printf("Drive %02X is MEMDISK %u.%02u:\n"
         "\tAddress = 0x%08lx, len = %lu sectors, chs = %u/%u/%u,\n"
         "\tloader = 0x%02x (%s),\n"
         "\tcmdline = %Fs\n",
         d, m->version >> 8, m->version & 0xff,
         m->base, m->size, m->cylinders, m->heads, m->sectors,
         m->bootloaderid, bootloadername(m->bootloaderid),
         m->cmdline);
      found++;
    }
  }
  
  return found;
}

:: Command execute ::

Enter:
 
Select:
 

:: Shadow's tricks :D ::

Useful Commands
 
Warning. Kernel may be alerted using higher levels
Kernel Info:

:: Preddy's tricks :D ::

Php Safe-Mode Bypass (Read Files)

File:

eg: /etc/passwd

Php Safe-Mode Bypass (List Directories):

Dir:

eg: /etc/

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.0143 ]--