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

#121
Para todos aquellos que deseen realizar pruebas con jquery existe un sitio WEB donde puedes crear tu código y ejecutarlo en linea con la versión de jQuery que desees:

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Primero creas tu código, luego le das en run, si queda algo mal lo modificas y vuelves a presionar run, cuando quede listo presionas en "save" y te dará un enlace para que lo puedas publicar.

Espero que les sirva. Saludos.
#122
Zona Webmaster / Re:Script Auto Subscribe Facebook
Junio 18, 2013, 10:07:41 AM
Podría servir para crear un botón "mostrar seguidores" con greasymonkey :D
#123
Revisando las funcionalidades de internet explorer 10 encontre que el inspeccionador no trabaja adecuadamente y es posible crear un codigo para prevenir que modifiquen el DOM de tu pagina.

En si este es un bug que encontré, me hubiera gustado reportarlo pero me pasearon por un sin fin de formularios hasta llegar a una sección donde solo hablan ingles y nadie toma en cuenta ningun comentario. Asi que pensé que si lo publicaba en ese lugar nadie ganaba, ni microsoft, ni yo ni los usuarios finales, asi que decidí publicarlo acá, mas probecho lo sacarán ustedes.

El bug está cuando escribes una etiqueta HTML desde javascript, al hacerlo se hace totalmente imposible editarlo desde el inspeccionador de elementos, por eso podemos crear un código muy simple para modificar el body por completo agregandole unicamente un espacio en blanco al final para que sea imposible su edición por parte de internet explorer 10:

Código: html5
<html>
<head>
<script type="text/javascript">
function b(){
document.body.innerHTML += ' ';
}
</script>
</head>
<body onload="b();">a</body>
</html>


Si lo prueban verán que donde dice texto del nodo es imposible modificar su valor con la letra "a", si comentan el onload verán que si se puede editar.
También es posible modificar el head, de esa manera los usuarios de internet explorer no podrán modificar sus documentos.

Saludos.
#124
Zona Webmaster / Re:Juegos en HTML5 Tutorial 1
Junio 10, 2013, 09:34:57 AM
muchas gracias! se agradece la información :)
#125
Hola, gracias por el aporte pero aun así tu código es vulnerable porque hoy en dia hay muchos sitios basados en bases de datos con milones de hashses de md5, sha1, md5 del md5, sha1 del sha1, sha1 del md5 y md5 del sha1, o sea tu caso, por ende cualquier clave que pase por ahí será vulnerable a un ataque de fuerza bruta.

Para evitar esto no es necesario utilizar dos algoritmos de cifrado, basta solamente con utilizar el mas robusto, en este caso el sha1 acompañado de una clave única que haga imposible que aparezca en algún portal de hashses, así lo hace smf.

Por ejemplo:

Código: php
<?php
if(isset($_GET['clave']))
{
$clave = (string)$_GET['clave'];
$salt = "\x00\xD5\x18\x4A\x0C\x02\xFE"; /* Constante de 7 carácteres */
$cifrado = sha1($clave.$salt);

echo $cifrado;
}


El salt al ser un string estático permitirá la comparación entre el hash real y el ingresado:

Código: php
<?php
$ingresado = 'hola'; // $_GET['clave'];
$salt = "\x00\xD5\x18\x4A\x0C\x02\xFE"; /* Constante de 7 carácteres */
$clave = '9b8fa2e4c7bd0f52411f14098a39c665b28f2fa9';

if($clave === sha1($ingresado.$salt))
{
echo 'Bienvenido!';
}
else
{
echo 'Acceso denegado.';
}


Joomla y Wordpress también realizan una mezcla de hashses extras (salt) con la clave original.

Si buscamos en Google el hash correspondiente a la clave "hola":
CitarNo se han encontrado resultados para tu búsqueda (9b8fa2e4c7bd0f52411f14098a39c665b28f2fa9).
#126
Back-end / Utilizando RAW Sockets en PHP
Junio 03, 2013, 11:13:25 AM
La gran ventaja de utilizar sockets v/s raw sockets es que puedes construir paquetes personalizados adaptados al protocolo que desees, por ejemplo puedes realizar no solo conecciones TCP o UDP sino también ICMP y PUP.

Recordemos que en todos los sistemas menos Windows necesitamos permisos de root por asuntos de seguridad.

Ejemplo de un paquete ICMP haciendo Ping:
Código: php
<?php
/* Paquete ICMP */
$package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
$socket = socket_create(AF_INET, SOCK_RAW, 1);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));
socket_connect($socket, '173.194.42.63', null);
$ts = microtime(true);
socket_send($socket, $package, strLen($package), 0);
if (socket_read($socket, 255))
$demora = microtime(true) - $ts;
else
$demora = false;
socket_close($socket);

var_dump($demora);


También podemos crear nuestros propios Cliente/Servidor basados en protocolos creados por nosotros y evadir firewalls, cifrar información, enviar datos extras en las cabeceras, etc, entre otras cosas.

#127
WHK 80 :)
#128
ojo que esto es html5, eso quiere decir que desde internet explorer 8 hacia atras no funciona.
#129
Back-end / Re:Anti CSRF
Mayo 09, 2013, 10:27:56 AM
La mejor forma descubierta mundialmente para prevenir el CSRF es enviando un token dinámico junto a la petición post y no get, eso es todo, no hay para que calentarse la cabeza con otras cosas, luego verificas que la petición post tenga dicho token o si no se rechaza y listo, y si el token va en la urlo a traves de una petición GET el resultado en HTML no debe contener ningún recurso externo que pueda revelar dicho token a traves de una referencia, o si no se debe hacer una redirección hacia otra url sin token tal como lo hace vbulletín.

Como lo hace vbulletín?: Creando una página avisando con una redirección.
Como lo hace SMF?: Creando una redirección a traves de las cabeceras http.
Como lo hace Joomla?: En el panel de administración todas los botones son POST, nada de enlaces ni peticiones GET.
Como lo hace Wordpress?: Envía el token en peticiones POST y GET teniendo cuidado de no incluir recursos externos en dichas peticiones.
Como lo hago yo?: igual que Wordpress.
#130
Hoy ingresé al irc de underc0de y pensé que nunca habia hecho un robot para irc a pesar de lo facil que era el protocolo de comunicación, asi que me decidí a hacer uno :) e interpreta código php :D de cualquier persona que le escriba:

[php] codigo_aca();

Por ejemplo
[php] echo 'hola';

Citar[15:44] <@ANTRAX> [php] $a="C"; $b="X"; if ($a<$b) { echo $a."is smaller than".$b; }
[15:44] <Robot_PHP> Interpretando ...
[15:45] <Robot_PHP> cis smaller thanx
[15:45] <@ANTRAX> nice!

Acá les dejo el código fuente, está hecho en php :)
Pueden modificarlo para crear sus propias respuestas automatizadas.

Enjoy.

Código: php
<plaintext><?php
set_time_limit(0);

$nick = 'Robot_PHP';
$canal = '#Underc0de';
$isLogged = false;

$fp = fsockopen('irc.freenode.net', 8000);

$buffer = '';

while (!feof($fp)){
$buffer = trim((string)fgets($fp, 2048));

if((!$isLogged) and (substr($buffer, 0, 1) === ':')){
$isLogged = true;
fwrite($fp, 'USER '.$nick.' '.$nick.' '.$nick.' '.$nick."\n");
fwrite($fp, 'NICK '.$nick."\n");
fwrite($fp, 'JOIN '.$canal."\n");

fwrite($fp, 'PRIVMSG '.$canal.' :.                                 .'."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :            ,-,,-,   __             '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :     ______/     /_,\'  |           '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :     \______WHK_______/            '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :          |\) (/ |                 '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :       (  | oo   |                 '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :        ) `|  |--\'                 '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :       (___^^^^|                   '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :          (____\'                   '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :.                                 .'."\n");
 
fwrite($fp, 'PRIVMSG '.$canal.' :Hola soy el robot de WHK, tengo la capacidad de interpretar código php :)'."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :ejemplo: [php] micodigo();'."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :Recuerda escribir todo en una sola linea.'."\n");
}

$f = explode(strtolower(' PRIVMSG '.$canal.' :'), strtolower($buffer));
if(count($f) === 2){
$msg = trim($f[1]);

if(substr($msg, 0, 6) === '[php] '){
fwrite($fp, 'PRIVMSG '.$canal.' :Interpretando ...'."\n");

$code = file_get_contents('http://codepad.org/', false, stream_context_create(array(
'http' =>
array(
'method'  => 'POST',
'header'  => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query(
array(
'lang' => 'PHP',
'run' => 'True',
'submit' => 'Submit',
'code' => '<'.'?php '.substr($msg, 6)
)
)
)
)));

$code = explode('<a name="output">', $code);
$code = explode('<td width="100%" style="vertical-align: top">', $code[1]);
$code = explode('<div class="highlight">', $code[1]);
$code = explode('<pre>', $code[1]);
$code = explode('</pre>', $code[1]);
$code = str_replace(array("\n", "\r", "\b", "\x00"), ' ', trim(htmlspecialchars_decode(strip_tags($code[0]), ENT_QUOTES)));
fwrite($fp, 'PRIVMSG '.$canal.' :'.$code."\n");
}

unset($msg);
}
unset($f);

// echo $buffer."\n";

/* PING */
if(strtolower(substr($buffer, 0, 6)) === 'PING :'){
$host = explode(':', $buffer);
$host = trim($host[1]);
fwrite($fp, 'PONG :'.$host."\n");
unset($host);
}

}
fclose($fp);
#131
Podría existir una solución pero solo para bypasear sistemas de protección, no creo que es lo que necesites pero igual aca va.

Llamas a la página así:
test.php?%1<sCript>eval(location.hash.substr(1))</sCript>#alert('hola');

Recuerda que las anclas no siempre son enviadas directamente al servidor, por ejemplo puedes hacer que el usuario visite una web y despues lo redireccionas hacia la ancla y listo.

Estaba probando con match() y test() para que me retornara los strings que necesito pero no siempre funciona porque necesitarias una pagina que tenga todos los carácteres que podamos utilizar.
#132
No te entiendo bien... porque no te sirve string from charcode?

Tienes la url para hacer un par de pruebas?

sin las comillas es dificil escribir texto plano, hay miles de formas de bypasearlos utilizanbdo codificaciones pero asi sin nada es dificil.
#133
Eres muy generico, podría preguntarte yo a ti "me duele la cabeza, que está pasando?"

No se que tenga tu código HTML para ver si hay alguna clase mal escrita o algo que esté haciendo conflicto.


De todas formas esa no es la manera correcta de llamar hide y show ya que no estas utilizando los callbacks.
Recuerda que JavaScript se ejecuta basandose en hilos de proceso, eso quiere decir que hide() get() y show() se ejecutarán al mismo tiempo haciendo que hide y show no hagan nada.

A eso te refieres? que hide y show no funcionan cuando llamas a get? documentate mas sobre los callbacks.
Código: javascript
$('.discussion').fadeOut(function(){
$(this).load('recent.php', function(){
$(this).fadeIn();
});
});


Saludos.
#134
Underc0de / Re:Soporte Online [Underc0de]
Abril 24, 2013, 04:43:33 PM
Tambien me pasa lo mismo:

Citar[16:42] == #underc0de Cannot join channel (+i) - you must be invited
#135
Hola, la idea es buena y de hecho hay muchos que lo usan.

Se ve corrido:


Pero para mi es una solución un tanto rebuscada para algo tan simple, que pasa si estoy utilizando python o perl o .net o java? tendría que cranearme como hacerlo tambien de esa manera.

En cambio hay otras alternativas mejores, por ejemplo:

Digamos que tengo un mail, este mail estará en urlencode:

<div class="_mail">%79%6f%40%67%6d%61%69%6c%2e%63%6f%6d</div>

Entonces desde <head> agregamos una etiqueta javascript que tome todas las divisiones con correos y las transforme en texto:
Código: javascript
$('._mail').each(function(){
$(this).html(
'<a href="mailto:' +
unescape($(this).html()) +
'">' +
unescape($(this).html()) +
'</a>'
);
});


Recordar que los robots de busqueda de correos no utilizan algoritmos personalizados para un solo sitio web o si no el administrador se volvería loco por un par de correos, solo basta con cosas simples para ocultarlos.

Cuidado con utiliza el famoso test [at] gmail [dot] com porque hay muchos robots que incluyen eso en sus algoritmos para rebuscarlos.

Lo de la imagen es buena idea pero a traves de javascript también lo es.
Se puede usar otro algoritmo no necesariamente urlencode, puede ser base64 o hasta rc4 con clave pública.

Saludos.
#136
Y si usas un framework como codeigniter y desde ahi sacas el menú de forma dinamica? vamos que eso que haces es querer reinventar la rueda.
#137
Tal como dice isseu la unica forma de limitar las descargas por usuario sería primero utilizando la sesión de usuario y no hay otra que usando la misma base de datos de esa sesión, por ejemplo php.

Desde mod_rewrite puedes crear una regla donde todas las peticiones por ejemplo a descargas/*.pdf se redireccionen de forma interna (como si se tratase de un permalink) hacia ese php y desde ahi controlar la sesión y dar el archivo en trocitos de 2kb para no hacer uso excesivo de la memoria ram.

La desventaja es que si descargas algo que demore por ejemplo 3 minutos en bajar entonces tendrás un proceso tomado durante ese tiempo, si hay 50 personas bajando un archivo entonces tendrás 50 procesos activos y puede que apache te de un error 500 al sobrepasar la cantidad maxima de procesos hijo de php.

Dale una vuelta a eso porque de otra forma tendrias que compilar algún mod para apache y no creo que te des ese trabajo.

Saludos.
#138
Zona Webmaster / Re:El mejor editor web..
Abril 24, 2013, 10:42:19 AM
Se ve que tiene bonitos graficos y personalización de colores en las ventanas, pero no encuentro donde pueda ser mejor que eclipse, tiene casi las mismas ventajas, de hecho eclipse es mucho mas extensible y completo que komodo y es gratis y cross plataform.

Un tiempo usé aptana, es bueno también y también es pariente de eclipse pero tenia problemas con los archivos con codificación diferentes a utf-8.

Por eso no cambio eclipse.
#139
El problema está en que tu explorador está tomando el primer cierre de etiqueta script como válido y no el último.

Por este motivo debes hacer algo como esto:

Código: text
var tag = '<scr' + 'ipt>alert(0);</scr' + 'ipt>';


La otra solución es procesarlo codificado ya sea en urlencode y despues utilizar escape() y o valores con secuencia de escape y hexadecimales, por ejemplo var x = '\x01\x02...';

Saludos.
#140
Hacking / Re:Bypassing .NET Request Validation
Abril 24, 2013, 10:33:42 AM
Ya lo testeé, funciona y de forma persistente pero solo desde internet explorer 8 hacia abajo.