Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: Dacan en 15 Noviembre 2008, 00:38 am



Título: [Duda] Sql Injeccion
Publicado por: Dacan en 15 Noviembre 2008, 00:38 am
$coment = htmlentities($_POST['coment']);
$db = "INSERT INTO `comentarios` (id,nick,fecha,coment) ";
$db.= "values ('".$_GET['id']."','".$_POST['nick']."','".time()."','".$coment."')";
$db = mysql_query($db);
Como podría borrar la tabla comentario ya que no usa ningún filtrado y lo inserta sin comprobación.

$db = mysql_query("SELECT * FROM `usuarios` WHERE usuario='$_POST[usuario]'"); ;
    $datos = mysql_fetch_array($datos);
        if($db['password'] == $_POST['contraseña']){
// aqui te da permisos para entrar
}
Como puedo saltarme el login..

Saludos, Dacan  :D


Título: Re: [Duda] Sql Injeccion
Publicado por: AlbertoBSD en 15 Noviembre 2008, 15:09 pm
Pues yo trate con el segundo y nada xD, lo estuve provando en el Apache que tengo y pues no me resulto, hacia yo consultas algo descabelladas y seguia igual.

He logrado que realice la consulta de otro usuario. pero en realidad sigue sin poder saltarme el login.


Título: Re: [Duda] Sql Injeccion
Publicado por: VCore en 23 Noviembre 2008, 00:55 am
Como hacen para mandar ese tipo de inyecciones?

Yo estoy acostumbrado a usar los tipicos campos de la pagina o en la url :S


Título: Re: [Duda] Sql Injeccion
Publicado por: AlbertoBSD en 23 Noviembre 2008, 03:35 am
Con algunos mods de Mozilla que termiten editar la Informacion en tiempo real.

O con netcat xD.

Saludos.



Por cierto que ya no he intendado pasar ese login.  :-(


Título: Re: [Duda] Sql Injeccion
Publicado por: berz3k en 27 Noviembre 2008, 10:10 am
Datos de los cuales puedes borrar, actualizar e insetar dentro de tablas MySQL

Drop
:http://dev.mysql.com/doc/refman/5.0/en/drop-database.html

Insert
:http://dev.mysql.com/doc/refman/5.0/en/insert.html

Update:
http://dev.mysql.com/doc/refman/5.0/en/update.html

Para injeccion recomendaria uses paros proxy o cualquier otro donde puedes manipular los datos.

:http://www.parosproxy.org/


-berz3k.



Título: Re: [Duda] Sql Injeccion
Publicado por: iax0r en 23 Enero 2009, 13:45 pm
Existe una extension para FF llamada  Live HTTP Headers , esa es la que yo utilizo  :D


Título: Re: [Duda] Sql Injeccion
Publicado por: AlbertoBSD en 23 Enero 2009, 16:32 pm
Obvio que muchos de los de este foro lo usan, sin embargo has podido saltar ese Query ?

Saludos.


Título: Re: [Duda] Sql Injeccion
Publicado por: WHK en 23 Enero 2009, 21:09 pm
Tienes el sitio web?, veo que utiliza en una parte htmlentities y eso no filtra las comillas simples, en cuanto a esta linea:

Código
  1. $db = mysql_query("SELECT * FROM `usuarios` WHERE usuario='$_POST[usuario]'");
  2. $datos = mysql_fetch_array($datos);
  3. if($db['password'] == $_POST['contraseña']){
  4. // aqui te da permisos para entrar
  5. }

Acá podemos ver la falla, en donde dice $_POST[usuario] siempre y cuando el servidor no tenga las famosas magic quotes ya que necesitamos escapar con una sola comilla simple...
Citar
usuario=admin'+union+select+1,2,,.......10+--+

Esto significa que escapamos con una comilla simple y comenzamos a escalar con 1,2,3,4 hasta que nos debuelva el valor impreso en la web, entonces con eso ya tendremos el número de columnas de la base de datos (ese dato te falta), luego cerramos la query con un comentario o cerrando la comilla antes del último número.

Una ves hecho esto recuerda que la base de datos estará debolviendo todos los datos del usuario seleccionado pero en este caso te debolverá la sql inyección o sea user:1 pass:2 mail:3 otrodato:4 y así asi que ahora debes poner como usuario admin si es que quieres entrar comoa dmin porque no se sabe cual es el nombre de usuario de la entrada.. y de contraseña le pones lo que pusiste en la sql inyección dependiendo la columna, para eso te aseguras con esto:
Citar
usuario=admin'+union+select+1,1,1,.......1+--+

Con esto ya sabrás que te va a debolver como contraseña un uno y ese será la respuesta que debes poner en el formulario, pones user admin y pass 1 y podrás tener acceso.

Otra forma es haciendo un update db.users con el valor del nuevo password.

Ahora recuerda que no siempre las contraseñas están escritas en las bases de datos de los sitios web tal como la escribes, por lo general están hechas en md5 aunque si no fuera así solo quedaría adivinar y tener una bola mágica  :xD asi que en la inyeción sql ingresas en la columna del pasword el valor del password codificado en md5 que sería
Citar
md5('1') = c4ca4238a0b923820dcc509a6f75849b
que puedes ponerlo con char(x,x,x,) o concat(0xdword).
En resumidas palabras te estoy dando la respuesta de una prueba en el warzone  :xD jajajaja ya va a venir sdc a colgarme  :P pero bueno asi es la vida.

Con respecto al primero solo debes escapar con
Citar
") and [query] or 1=("1


Título: Re: [Duda] Sql Injeccion
Publicado por: Pablo Videla en 23 Enero 2009, 21:13 pm
Con el tamper data se puede hacer esas cosas , es un addons de firefox , saludos ;D


Título: Re: [Duda] Sql Injeccion
Publicado por: Dacan en 24 Enero 2009, 02:01 am
Muchísimas gracias WHK lo pondré en practica solo para aprender ya que lo hago en mi propia aplicación.

Saludos, Dacan  :D