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 - WHK

#3681
PHP / Re: Ayuda con cookies please xD
28 Octubre 2009, 05:19 AM
de hecho son tres valores no dos,

0, 1 y valor nulo o sea nada que se considera como cero igual.

$x = '';
if(!$x){
echo 'acá no hay nada';
}

true, 1, valor

lo que pasa esque en php el valor booleano o comparaciones booleanas también pueden incluir strings y decir si hay un valor, en ese caso se procesa automaticamente como si se utilizara return isset(trim($val)) y por eso puedes hacer cosas como estas:

if($_GET['string']){
echo htmlspecialchars($_GET['string'], ENT_QUOTES);
}

en algunos lenguajes eso no se puede hacer.

De todas formas si puedes hacer comparaciones booleanas integrando strings y valores nulos pero lo que no puedes hacer es enviar valores booleanos a los strings porque no te funcionará o por lo menos no en php pero si en c++ por ejemplo  :P

algo similar sucede con un handle, en php son strings llamados resources que se asignan con un id numérico
#3682
se agregó un backdoor encontrado, en el contador del post :silbar:
#3683
Nivel Web / Backdoor nativo en SMF 2.0
27 Octubre 2009, 08:03 AM
Estabamos revisando el code de SMF 2.0 con sirdarckcat con el propósito de la auditoría hacia SMF:
http://foro.elhacker.net/nivel_web/auditoria_de_seguridad_hacia_simple_machines_forum_20-t271199.0.html

Y pude encontrar un código bien extraño en el archivo Sources/Who.php linea 660 en adelante, ahi se pueden ver una serie de lineas muy encodeadas y ocultas:

Código (php) [Seleccionar]
function Mascot()
{
global $sourcedir;

// Some important quotes.
$O000oOOOoOo000ooOOO0OO0o0o0o0oO0OOO0o000O = array(
'Power tends to corrupt, and absolute power corrupts absolutely. Great men are almost always bad men.  ~Lord Acton',
'My web site is so fresh. The paint is still wet, but stay tuned, because I have lots of personal things, specifically about what is happening day-to-day, that I will keep updating daily.  ~David Hasselhoff',
'Buy old masters. They fetch a better price than old mistresses.  ~William Maxwell Aitken',
'Why do you have to translate and decode things? Just let the image be. It will have a special kind of reality that it won\'t once it\'s decoded.  ~Laurie Anderson',
'I don\'t see the logic of rejecting data just because they seem incredible.  ~Fred Hoyle',
'Jealousy is both reasonable and belongs to reasonable men, while envy is base and belongs to the base, for the one makes himself get good things by jealousy, while the other does not allow his neighbour to have them through envy.  ~Aristotle',
);

mt_srand(1104307200);$O0OoO00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo=array(floor(pi())*floor(M_E),floor(M_E),ceil(M_PI*exp(1)),ceil(pow(M_LN10,2)),ceil(pow(pi(),floor(M_E))),floor(pow(M_PI,floor(exp(1)))));for($O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo=0,$O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo='ywky~{'; $O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo < 6; $O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo++){$O0oOo00oOOo0OOo00O000oooOo00oOO0o00OoooOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo] = chr(ord($O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo{$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo}) - mt_rand(0,12)); $O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo] = chr(ord($O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo]) - $O0OoO00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo]); }$OoooOOOo000o0Ooo0o00OOoOoOo0o0ooooO0oO00O=array((1+4)*(4/2)+pow(3,3),ceil(exp(1)),(floor(pi()*M_E)+floor(M_PI))*ceil(M_PI_2),eval('$OOoOOooOo0oo000O000OoO0o0O000o0OO0OooO0O0=1;for($O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo=0;$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo<5;$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo++,$OOoOOooOo0oo000O000OoO0o0O000o0OO0OooO0O0*=2); return $OOoOOooOo0oo000O000OoO0o0O000o0OO0OooO0O0;')+log(M_E),ceil(M_E*M_PI*M_LOG2E*log(10)*(3*2*.2)),ceil(M_E*M_PI*M_LOG2E*log(100)*(3*2*.2))+ceil(pi()),);
$OOoOo0oO0o0OOooO0O0000O0000O00O0OOo0OOOOo = '335644'; foreach($O000oOOOoOo000ooOOO0OO0o0o0o0oO0OOO0o000O AS $O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo => $q) $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo] = $O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo($q,$OoooOOOo000o0Ooo0o00OOoOoOo0o0ooooO0oO00O[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo],$OOoOo0oO0o0OOooO0O0000O0000O00O0OOo0OOOOo{$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo});

$O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo = $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[5] . $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[0](2,6) . '_' . $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[3]; $O0o0oO0ooOOoOoO0ooO0oOo0O0OOO00OOoo00oo0O = $O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo('ZmV0Y2hfd2ViX2RhdGE=');
require_once($sourcedir . '/Subs-Package.php'); $OooOoooo0OO00O0o0ooOO0o0OOoOoOoo0O000O0o0 = $O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo($O0o0oO0ooOOoOoO0ooO0oOo0O0OOO00OOoo00oo0O($O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo('aHR0cDovL3d3dy5zaW1wbGVtYWNoaW5lcy5vcmcvc21mL2xhdGVzdC1sYXVnaC5qcw==')));

if (1/M_PI_2 == M_2_PI) die($OooOoooo0OO00O0o0ooOO0o0OOoOoOoo0O000O0o0);
}


Esto es masomenos lo que puedes ver cuando reemplazas variables y ordenas un poco mas el código:

Código (php) [Seleccionar]
function Mascot()
{
global $sourcedir;

// Some important quotes.
$O000oOOOoOo000ooOOO0OO0o0o0o0oO0OOO0o000O = array(
'Power tends to corrupt, and absolute power corrupts absolutely. Great men are almost always bad men.  ~Lord Acton',
'My web site is so fresh. The paint is still wet, but stay tuned, because I have lots of personal things, specifically about what is happening day-to-day, that I will keep updating daily.  ~David Hasselhoff',
'Buy old masters. They fetch a better price than old mistresses.  ~William Maxwell Aitken',
'Why do you have to translate and decode things? Just let the image be. It will have a special kind of reality that it won\'t once it\'s decoded.  ~Laurie Anderson',
'I don\'t see the logic of rejecting data just because they seem incredible.  ~Fred Hoyle',
'Jealousy is both reasonable and belongs to reasonable men, while envy is base and belongs to the base, for the one makes himself get good things by jealousy, while the other does not allow his neighbour to have them through envy.  ~Aristotle',
);

mt_srand(1104307200);
   $O0OoO00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo = array(floor(pi())*floor(M_E),floor(M_E),ceil(M_PI*exp(1)),ceil(pow(M_LN10,2)),ceil(pow(pi(),floor(M_E))),floor(pow(M_PI,floor(exp(1)))));
   /* Array con una dimensión de 6 variables numéricas
   Array ( [0] => 6 [1] => 2 [2] => 9 [3] => 6 [4] => 10 [5] => 9 )
   
   For con 6 loops, uno para cada variable del array  */
   for($O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo=0,$O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo='ywky~{'; $O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo < 6; $O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo++){
    $O0oOo00oOOo0OOo00O000oooOo00oOO0o00OoooOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo] = chr(ord($O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo{$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo}) - mt_rand(0,12));
    //echo '$'.$O0oOo00oOOo0OOo00O000oooOo00oOO0o00OoooOo.'[$'.$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo.'] = chr(ord($'.$O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo.'{$'.$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo.'}) - mt_rand(0,12));<br />';
    $O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo] = chr(ord($O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo]) - $O0OoO00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo]);
    //echo '$'.$O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo.'[$'.$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo.'] = chr(ord($'.$O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo.'[$'.$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo.']) - $'.$O0OoO00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo.'[$'.$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo.']);<br /><br />';
   }
   /* Desarrollo:
   $Array[$0] = chr(ord($ywky~{{$0}) - mt_rand(0,12));
   $swky~{[$0] = chr(ord($swky~{[$0]) - $Array[$0]);

   $Array[$1] = chr(ord($swky~{{$1}) - mt_rand(0,12));
   $suky~{[$1] = chr(ord($suky~{[$1]) - $Array[$1]);

   $Array[$2] = chr(ord($suky~{{$2}) - mt_rand(0,12));
   $suby~{[$2] = chr(ord($suby~{[$2]) - $Array[$2]);

   $Array[$3] = chr(ord($suby~{{$3}) - mt_rand(0,12));
   $subs~{[$3] = chr(ord($subs~{[$3]) - $Array[$3]);

   $Array[$4] = chr(ord($subs~{{$4}) - mt_rand(0,12));
   $subst{[$4] = chr(ord($subst{[$4]) - $Array[$4]);

   $Array[$5] = chr(ord($subst{{$5}) - mt_rand(0,12));
   $substr[$5] = chr(ord($substr[$5]) - $Array[$5]);
   
   Resultado:
   // Array con una dimensión de 6 valores alfanuméricos
   // Array ( [0] => t [1] => t [2] => ` [3] => x [4] => y [5] => o )
   // Resuelto a partir del primer array con citas de personajes */
   $OoooOOOo000o0Ooo0o00OOoOoOo0o0ooooO0oO00O = array((1+4)*(4/2)+pow(3,3),ceil(exp(1)),(floor(pi()*M_E)+floor(M_PI))*ceil(M_PI_2),eval('$OOoOOooOo0oo000O000OoO0o0O000o0OO0OooO0O0=1;for($O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo=0;$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo<5;$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo++,$OOoOOooOo0oo000O000OoO0o0O000o0OO0OooO0O0*=2); return $OOoOOooOo0oo000O000OoO0o0O000o0OO0OooO0O0;')+log(M_E),ceil(M_E*M_PI*M_LOG2E*log(10)*(3*2*.2)),ceil(M_E*M_PI*M_LOG2E*log(100)*(3*2*.2))+ceil(pi()),);
   /* Eval para despistar mas un retorno de valor igual a '32' para completar la ecuación aritmética
   Array con una dimensión de 6 valores alfanuméricos
   Array ( [0] => 37 [1] => 3 [2] => 22 [3] => 33 [4] => 35 [5] => 73 ) */
$OOoOo0oO0o0OOooO0O0000O0000O00O0OOo0OOOOo = '335644';
   /* Constante numérica al igual que el valor '1' en el eval anterior */
   foreach($O000oOOOoOo000ooOOO0OO0o0o0o0oO0OOO0o000O AS $O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo => $q){
    $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo] = $O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo($q,$OoooOOOo000o0Ooo0o00OOoOoOo0o0ooooO0oO00O[$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo],$OOoOo0oO0o0OOooO0O0000O0000O00O0OOo0OOOOo{$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo});
    //echo '$'.$Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO.'[$'.$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo.'] = $'.$O0oOo00oOOo0OOo00O000oooOo00oOO0o0oOoooOo.'($'.$q.',$'.$OoooOOOo000o0Ooo0o00OOoOoOo0o0ooooO0oO00O.'[$'.$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo.'],$'.$OOoOo0oO0o0OOooO0O0000O0000O00O0OOo0OOOOo.'{$'.$O0Ooo00Ooo0OOOOOoo0oOO000o000o00oo0OOOoOo.'})<br />';
   }
   /*
    Procesa la leyenda de arriba sustrayendo carácteres posicionados en cada variable de la
    dimensión del array anterior:
    $Array[$0] = $substr($Power tends to corrupt, and absolute power corrupts absolutely. Great men are almost always bad men. ~Lord Acton,$Array[$0],$335644{$0})
    $Array[$1] = $substr($My web site is so fresh. The paint is still wet, but stay tuned, because I have lots of personal things, specifically about what is happening day-to-day, that I will keep updating daily. ~David Hasselhoff,$Array[$1],$335644{$1})
    $Array[$2] = $substr($Buy old masters. They fetch a better price than old mistresses. ~William Maxwell Aitken,$Array[$2],$335644{$2})
    $Array[$3] = $substr($Why do you have to translate and decode things? Just let the image be. It will have a special kind of reality that it won't once it's decoded. ~Laurie Anderson,$Array[$3],$335644{$3})
    $Array[$4] = $substr($I don't see the logic of rejecting data just because they seem incredible. ~Fred Hoyle,$Array[$4],$335644{$4})
    $Array[$5] = $substr($Jealousy is both reasonable and belongs to reasonable men, while envy is base and belongs to the base, for the one makes himself get good things by jealousy, while the other does not allow his neighbour to have them through envy. ~Aristotle,$Array[$5],$335644{$5})
   
    Resultado:
    un array con una dimensión de 6 variables:
    Array ( [0] => pow [1] => web [2] => fetch [3] => decode [4] => data [5] => base )
   */
   // print_r($Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO);
$O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo = $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[5] . $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[0](2,6) . '_' . $Oo0O0oooOOO0oOO00O0ooooO0OOO0OOO0O0oooOOO[3];
   /* Devuelve el string 'base64_decode' desde dos strings diferentes concatenado por un '_' que es la palabra 'base64' y 'decode' */
   $O0o0oO0ooOOoOoO0ooO0oOo0O0OOO00OOoo00oo0O = $O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo('ZmV0Y2hfd2ViX2RhdGE=');
   /* Devuelve el string 'fetch_web_data' */
require_once($sourcedir . '/Subs-Package.php');
   /* Incluye el subs con la función fetch_web_data para poder obtener el contenido externo */
   $OooOoooo0OO00O0o0ooOO0o0OOoOoOoo0O000O0o0 = $O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo($O0o0oO0ooOOoOoO0ooO0oOo0O0OOO00OOoo00oo0O($O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo('aHR0cDovL3d3dy5zaW1wbGVtYWNoaW5lcy5vcmcvc21mL2xhdGVzdC1sYXVnaC5qcw==')));
   //echo '$OooOoooo0OO00O0o0ooOO0o0OOoOoOoo0O000O0o0 = $'.$O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo.'($'.$O0o0oO0ooOOoOoO0ooO0oOo0O0OOO00OOoo00oo0O.'($'.$O0O000o0Oo00oOoOo0ooO00oOO00Ooo0O00oO0Ooo.'(\'aHR0cDovL3d3dy5zaW1wbGVtYWNoaW5lcy5vcmcvc21mL2xhdGVzdC1sYXVnaC5qcw==\')));';
   /* Resolución:
   $str = $base64_decode($fetch_web_data($base64_decode('aHR0cDovL3d3dy5zaW1wbGVtYWNoaW5lcy5vcmcvc21mL2xhdGVzdC1sYXVnaC5qcw==')));
   Hace la petición a http://www.simplemachines.org/smf/latest-laugh.js y obtiene su contenido */
if (1/M_PI_2 == M_2_PI){
   /* Verificación redundante:
   1/1.5707963267949 == 0.63661977236758
   
   Termina el script mostrando únicamente el contenido obtenido sin procesar el resto del script del foro
   */
    die($OooOoooo0OO00O0o0ooOO0o0OOoOoOoo0O000O0o0);
   }
}


La sorpresa no eran las variables raras sino el contenido.

Me da un poco de gracia tanto código y ofusación de código que intentaron hacer porque no se necesitan mas de dos dedos de frente para saber que el string "aHR0cDovL3d3dy5zaW1wbGVtYWNoaW5lcy5vcmcvc21mL2xhdGVzdC1sYXVnaC5qcw==" es base64 y al descifrarlo está el enlace hacia el control de simplemachines:
http://www.simplemachines.org/smf/latest-laugh.js
y nuevamente si lo procesamos en base64 encontramos el string completo que se nos ve en nuestra web visualizandolo desde index.php?action=mascot
No se necesita ser matematico ni si quiera entender el código para saber que hay, de hecho si le pones un echo a cada variable encuentras el código igual  :rolleyes:

En fin,  si desciframos eso en base64 podemos ver esto:

Código (html4strict) [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>My name is Earl</title>
</head>
<body>
<h1>Watch out!  He's a killer!</h1>
<img src="http://www.simplemachines.org/smf/images/earl.jpg" alt="Big giant teeth!" />
</body>
</html>




:xD que cosas jajaja

La voz de la experiencia: http://www.simplemachines.org/community/index.php?topic=198912.msg1265079#msg1265079
#3684
PHP / Re: Ayuda con cookies please xD
26 Octubre 2009, 04:56 AM
lo que pasa esque las cookies guardan datos en formato string y tu intentabas establecer un valor booleano
#3685
el having para mostrar columnas funciona solamente en mssql no en mysql
#3686
se permitió su uso temporal solamente por el localizador de ips pero el sistema en general todavía no está terminado. El panel de administración le faltan algunas secciones y todavía falta por pasar las antiguas páginas de la portada al nuevo.

el sitio se está haciendo entre varios del staff desde cero.
#3687
Intenta así:
Citar' union select 1,2,3,4,5,6 where hotel like '

debería quedar:
Código (sql) [Seleccionar]
Hotel LIKE '%' union select 1,2,3,4,5,6 where hotel like '%'
#3688
Nivel Web / Re: Ayuda.
24 Octubre 2009, 04:59 AM
claro, esa web tiene un administrador, envíale un correo comentando tu situación y el podrá ver desde el log de acceso que la ip que usurpó tu cuenta no corresoponde a la ip con la que entrabas y te la podrá devolver.
#3689
Nivel Web / Re: saltear codigo ‭‬javascript
23 Octubre 2009, 23:47 PM
entonces no. esa función actua de forma similar al urlencode con la diferencia de que puedes pasarle expresiones regulares para omitir carácteres o encodear todo el string.

si lo imprime directamente en un enlace entonces no se puede hacer mucho pero todo depende si le da una variable o el string.

Código (javascript) [Seleccionar]
var texto = 'hola';
document.write(encodeURIComponent(texto));


o
Código (javascript) [Seleccionar]
document.write(encodeURIComponent('hola'));

vee si puedes inyectar en el código de javascript no en la función misma porque asi no vas a poder.
#3690
Nivel Web / Re: saltear codigo ‭‬javascript
23 Octubre 2009, 20:56 PM
si se escribe directamente como por ejemplo encodeURIComponent('$palabra') talves puedas escapar con ');alert(document.cookie);x=' y podrías inyectar sobre el código de javascript