problem z uruchomieniem shellcode

masterofd1

Użytkownik
Dołączył
Czerwiec 2, 2011
Posty
1
Witam.
Ostatnio zainteresowałem się inżynierią wsteczną i i crackingiem. Niestety napotkałem teraz na jeden problem.
Mam taki oto program:
Kod:
#include <stdio.h>
#include <string.h>

int czyadmin(char argument[8]){
  char haslo[8];

  strcpy(haslo, argument);

  if(strcmp(haslo, "atajnea")==0)
    return 1;

  return 0;
}

int main(int c, char **argumenty){
char shell[]="\xeb\x13\x59\x31\xc0\xb0\x04\x31\xdb\x43\x31\xd2\xb2\x0f\xcd\x80\xb0\x01\x4b\xcd\x80\xe8\xe8\xff\xff\xff\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21\x0a\x0d"; 

  if(czyadmin(argumenty[1]))
    printf("witaj adminie!\n");
  
  else 
    printf("Brak dstepu\n");
}

sprawdzam w gdb pod jakim adresem zapisana jest zmienna shell:
Kod:
(gdb) x/x shell
0xbffff267:	0xfff29808
a następnie próbuję nadpisać adres powrotny:
Kod:
[tomek@tomek nauka]$  ./nadpisywanie2 $(perl -e 'print "\xbf\xff\xf2\x67"x40')
Naruszenie ochrony pamięci
[tomek@tomek nauka]$
jak widać, hello world(który zdefiniowany był w shellu) nie wyswietlił się. czy dzieje się to dla tego, że shell jest zapisany w sekcji ze zmiennymi, a nie w sekcji kodu(bo skok do dowolnej instrukcji programu próbowałem robić, i da się)?
Jeśli tak, w jaki sposób mogę wykonać takiego shella?

Z góry dziękuję za pomoc
Pozdrawiam
 
Do góry Bottom