[Duda] Sql Injeccion

Iniciado por Dacan, 15 Noviembre 2008, 00:38 AM

0 Miembros y 1 Visitante están viendo este tema.

Dacan


$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

AlbertoBSD

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.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

VCore

Como hacen para mandar ese tipo de inyecciones?

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

AlbertoBSD

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.  :-(
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

berz3k

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.


iax0r

Existe una extension para FF llamada  Live HTTP Headers , esa es la que yo utilizo  :D

AlbertoBSD

Obvio que muchos de los de este foro lo usan, sin embargo has podido saltar ese Query ?

Saludos.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

WHK

#7
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 (php) [Seleccionar]
$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
}


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...
Citarusuario=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:
Citarusuario=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
Citarmd5('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

Pablo Videla

Con el tamper data se puede hacer esas cosas , es un addons de firefox , saludos ;D

Dacan

Muchísimas gracias WHK lo pondré en practica solo para aprender ya que lo hago en mi propia aplicación.

Saludos, Dacan  :D