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

#21
PHP / Re: Expresión regular
25 Enero 2010, 21:31 PM
Funciona perfecto, eres un maestro de las expresiones regulares, por lo que veo has añadido algunas \ para escapar las / y por lo demás esta igual, gracias, he aprendido mucho y me ha gustado debatir este tema contigo.

Un saludo.
#22
PHP / Re: Expresión regular
25 Enero 2010, 16:10 PM
Probe como dices y sigue sin funcionar, y otras expresiones si que me funcionan, pego un trozo más grande del script, y así de paso puedes ver las otras expresiones, por si estuvieran mal, jejej  :xD :xD

Si le quito la / de inicio y fin, no funciona, por ejemplo en la primera que valida nombres, si le quito la /, no funciona y si se la pongo si que funciona bien.

Código (php) [Seleccionar]
foreach($_POST as $key => $value){
switch($key){
case "Nombre":
if(empty($value) or !preg_match("/^[a-zA-Z]+([\s][a-zA-Z]+)*$/", $value)){
$array_err[0] = $key;
}
break;
case "Apellidos":
if(empty($value) or !preg_match("/^[a-zA-Z]+([\s][a-zA-Z]+)*$/", $value)){
$array_err[1] = $key;
}
break;
case "Email":
$exp = "^(?![.,])(?:[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+)(?![.,]))$";
if(empty($value) or !preg_match($exp, $value)){
$array_err[2] = $key;
}
break;
case "Password":
case "Password1":
if((empty($_POST['Password']) and empty($_PAST['Password1'])) or ($_POST['Password'] != $_POST['Password1'])){
$array_err[3] = $key;
}
break;
case "Dni":
if(empty($value) or !preg_match("/^[0-9]{8}[A-Z]{1}$/", $value)){
$array_err[4] = $key;
}
$numero = substr($value, 0, -1);
$letras = array("T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E");
$dni = $numero . $letras[$numero%23];
if($dni != $value){
$array_err[4] = $key;
}
break;
case "Pais":
if(empty($value)){
$array_err[5] = $key;
}
break;
case "CodigoPostal":
if(empty($value) or !preg_match("/^[0-9]{5}$/", $value)){
$array_err[6] = $key;
}
break;
case "Direccion":
if(empty($value) or !preg_match("/^[a-zA-Z]+([\s-][a-zA-Z]+)*$/", $value)){
$array_err[7] = $key;
}
break;
case "Ciudad":
if(empty($value) or !preg_match("/^[a-zA-Z]+([\s-][a-zA-Z]+)*$/", $value)){
$array_err[8] = $key;
}
break;
case "Provincia":
if(empty($value) or !preg_match("/^[a-zA-Z]+([\s-][a-zA-Z]+)*$/", $value)){
$array_err[9] = $key;
}
break;
case "Numero":
if(empty($value) or !preg_match("/^[0-9]{1,4}$/", $value)){
$array_err[10] = $key;
}
break;
case "Planta":
if(empty($value) or !preg_match("/^[0-9]{1,3}$/", $value)){
$array_err[11] = $key;
}
break;
case "Puerta":
if(empty($value) or !preg_match("/^[\w]{1,4}$/", $value)){
$array_err[12] = $key;
}
break;
case "Telefono":
if(empty($value) or !preg_match("/^[0-9]{9}$/", $value)){
$array_err[13] = $key;
}
break;
}
}
#23
Nivel Web / Re: Duda sobre xss
25 Enero 2010, 16:00 PM
Cita de: yoyahack en 24 Enero 2010, 20:48 PM
Bueno aqui doy algunos metodos de atake CSRF mediante peticion GET y POST.

Bueno, tener claro que algunas veces los formularios envían datos por POST pero pasan la variable por $_REQUEST, osea que aunque el formulario la envié por post puedes enviar una petición GET y te la aceptara.

Ok, ahora si tenemos CSRF por metodo GET podemos hacer lo siguiente.
Si se puede usar BBCODE utilisaremos tags que se ejecutan al visualisarlo como puede ser los tag de
img, y entre los tags de imagenes insertamos el CSRF y al visualisar la img estara haciendo la peticion GET.
[IMG]http://serve.com/usuario/eliminar.php
[/IMG]


Por metodo post.
Primero crearemos un formulario que tenga los valores puesto y todo y lo enviaremos con ‭‬javascript.
<html><body>
<form name="topic" method="post" action="http://serve.com/crear_post.php">
<textarea name='topic' rows='5' cols='50' value='lalallalala'></textarea>
</form>
<script>document.topic.submit()</script>
</body></html>


Luego lo subimos a un host. Ahora lo que haremos es llamar nuestro scrit y crear el post.
Con esto lo llamaria:
<IMG SRC="http://host.com/formulario_que_enviara_el_CSRF.html">
Y al tratar de visualisar la img estaria ejecutando el formulario xD.

Saludos.

No digo que no se útil la información, que lo es y mucho, pero yo me quería centrar el problema en XSS, no en CSRF. no se porque el tema ha pasado a CSRF y no se ha hablado de XSS, a no ser que  se exploten de igual manera, cosa que desconozco y que me gustaría aprender, pero creo que mi duda no se ha resuelto, o por lo menos yo no la tengo resuelta, y si es que se ha dado la solución, pido disculpas por que no la veo o entiendo los posts.

Un saludo.
#24
PHP / Re: Expresión regular
24 Enero 2010, 20:43 PM
Bueno...... ahora si te digo que no me valida los correos, que me dices?? jejej
Código (php) [Seleccionar]

$exp = "/^(?![.,])(?:[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+)(?![.,]))$/";
if(!preg_match($exp, $value)){
       $array_err[2] = $key;
}


Si el correo es correcto, $array_err[2] no debería de contener el valor $key y en cambio si lo contiene, ¿Hay algo mal?
#25
PHP / Re: Ayuda con este código
24 Enero 2010, 20:34 PM
Hola, prueba de pasarle como parámetro, el resultado de la consulta.
Código (php) [Seleccionar]

...
$result= mysql_query($query);
        }
        if(mysql_affected_rows($result)==1) {
...

#26
PHP / Re: Expresión regular
24 Enero 2010, 20:29 PM
Cita de: raul338 en 24 Enero 2010, 19:42 PM
Ups, perdon, error de copiar y pegar del editor :P

Ahi esta corregida, ahora la explico (y creo que hare un cambio mas :P)

Where is it??? Se te ha olvidado poner la expresión, jajjaja
#27
Nivel Web / Re: Duda sobre xss
24 Enero 2010, 19:55 PM
Cita de: WHK en 24 Enero 2010, 02:17 AM
Hola, desde el correo envias un enlace hacia una web tuya que puede estar en un hosting gratuito, luego haces el form con todos sus valores dentro de el y cuando esa persona lo visualize entonces se activaría una función en ‭‬‭‬‭‬‭‬javascript que va autoenviar el formulario con document.formulario.submit(); talves encerrado dentro del tag body y escrito dentro de onload y si se llega a ejecutar de esa forma significa que también es vulnerable a csrf.

No le veo sentido, porque así como dices la web es mía por que la he creado yo y es de cualquier temática o es una copia de la web vulnerable?

Hagamos un supuesto, de que encuentro una web vulnerable a xss, eso quiere decir que habrá algún lugar en la web donde yo podré introducir datos, esos datos estarán escritos de forma adecuada para que cuando se interprete el código html se ejecute el código que yo he introducido, hasta ahí bien. Ahora viene como procesa la web esa información que yo he introducido, puede que la lea a través de un método GET o un método POST.

Si la información la procesa por el método GET, ¿Cómo se haría el ataque?
Creando un web copia de la original, hospedarla en un hosting (al que pueda acceder) y enviar un correo electrónico a la víctima engañandola para que pulse el enlace rellene los campos y cuando envié el formulario copiarme los datos en el hosting y redirigir a la víctima a la web original. Eso es lo que he deducido de tu post WHK, por otra parte lo que acabo de explicar ¿se podría considerar phishing?

O por otra parte solo habría que enviarle un enlace con toda la información referente al ataque, vamos el código malicioso par que nos entendamos, en la misma petición GET, y cuando acceda a la web a través de ese enlace se le ejecutara el código, y se obtendrán los datos que se quieran obtener.

Si la información la procesa por el método POST, ¿Cómo se haría el ataque?
No tengo ni idea de como se podría hacer el ataque.


Por otra parte nunca he entendido el ataque CSRF, así que menos saber como explotarlo.
#28
PHP / Re: Expresión regular
24 Enero 2010, 19:31 PM
Podrías explicarme esa expresión si no es mucho pedir,  :xD porque dices que has incluido la verificación de la ip en la parte del host, y no lo veo o no se leerlo bien que será lo más seguro.

Eres un fenómeno de las expresiones regulares.

Un saludo
#29
PHP / Re: Expresión regular
24 Enero 2010, 12:03 PM
Perfecto, solo que se me olvido mencionar un detalle en mi último post,  :xD La parte del dominio también puede ser una ip, y se debe de escribir del siguiente modo, correo@[123.123.123.123], bueno este si que seria el último detalle para cumplir con el estándar. Gracias por la explicación.

Supongo que podría quedar así:
^(?![.,])(?:[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@((?![.,])[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+)?(?![.,]))|(\[(25[012345]|2[01234]\d|[01]?\d\d?)\.(25[012345]|2[01234]\d|[01]?\d\d?)\.(25[012345]|2[01234]\d|[01]?\d\d?)\.(25[012345]|2[01234]\d|[01]?\d\d?)\])$
#30
PHP / Re: Expresión regular
24 Enero 2010, 04:27 AM
Bueno, pues parece que ya he encontrado lo que estaba buscando en el rfc2822 se especifica el tamaño y los caracteres permitidos, así pues, los caracteres permitidos para la parte local (antes de @) son:

Letras minúsculas y mayúsculas (a-z, A-Z)
Dígitos 0 a 9
Caracteres ! # $ % & ' * + - / = ? ^ _ ` { | } ~

También el carácter ., no puede aparecer ni al inicio ni en el fin de la parte local, además no puede aparecer dos o más veces consecutivas.

Además de esto, también están permitidos las cadenas de texto entre comilladas, por ejemplo, "este ejemplo"@server.com y se distingue entre mayúsculas y minúsculas, no es lo mismo micorreo@server.com que miCorreo@server.com

algunas direcciones validas serian:

Cita de: Hay algunos repetidos
abc@example.com
Abc@example.com
aBC@example.com
abc.123@example.com
1234567890@example.com
_______@example.com
abc+mailbox/department=shipping@example.com
!#$%&'*+-/=?^_`.{|}~@example.com (todos estos caracteres están permitidos)
"abc@def"@example.com (cualquier cosa que esté entre comillas)
"Fred Bloggs"@example.com
"Fred \"quota\" Bloggs"@example.com (ojo, las comillas deben escaparse)
"Abc\@def"@example.com
"Fred Bloggs"@example.com
"Joe\\Blow"@example.com
"Abc@def"@example.com
customer/department=shipping@example.com
$A12345@example.com
!def!xyz%abc@example.com
_somename@example.com

El problema viene que después del estándar cada uno hace lo que quiere, así pues los servidores de correo admiten algunos caracteres o todos, habrá servidor que los admitirá todos (lo dudo) y habrá servidor que admitirá menos caracteres.

También se especifica que la longitud mínima es de 6 caracteres y la máxima de 255.

Fuente de todo lo anterior: http://en.wikipedia.org/wiki/E-mail_address

Y una expresión regular que valida todo lo anterior ^(?!\.)("([^"\r\\]|\\["\r\\])*"|([-a-z0-9!#$%&'*+/=?^_`{|}~] |(?@[a-z0-9][\w\.-]*[a-z0-9]\.[a-z][a-z\.]*[a-z]$
Hay una nota en la web de donde la he sacado que dice:
CitarThe part in bold is the local part. I am not worrying about checking my assumptions for the domain part for now.
Entiendo de esto que la parte que esta en negrita es la que valida la parte local y el chico este dice que no le preocupa la parte del dominio que es trivial.
fuente: http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx

Entonces haría que añadir la parte de después de la @, quedando entonces del siguiente modo.
^(?!\.)("([^"\r\\]|\\["\r\\])*"|([-a-z0-9!#$%&'*+/=?^_`{|}~] |(?@[a-z0-9][\w\.-]*[a-z0-9]\.[a-z][a-z\.]*[a-z]@[\w]+([\.\-\_][\w]+)*\.[\w]{2,4}$

Nota: Dice que esta expresión regular no es sensible a diferenciar las mayúsculas y minúsculas, cosa que se debería de cumplir para ajustarse al estándar.

PD: No me queda muy claro que caracteres contiene \w, ¿Alguien lo podría explicar?

EDITO: Me ha faltado comentar que la parte del dominio, también se puede escribir indicando la ip del mismo del siguiente modo: user@[123.123.123.123] vamos lo que seria un ip bien formada encerrada entre corchetes.