viernes, 17 de mayo de 2013

Inyecciónes Sql a fondo.¿Que es? y ¿Como se explota?(1/3)

Hola! Visitante de The Hacker Wars.

Acá os explicare un poco como hacer una inyección sql básica, y que son...vallamos a la obra de arte....



¿Que es una inyección sql o sql injection? 
Fácil! , es un método de infiltración de código en una aplicación web! y esto hace que podamos consultar bases de datos ¿Sencillo no?... Esto pasa porque no chequea bien o no filtra bien las variables , dicha aplicación...El resumen de esto seria que la inyección sql se le dice al code que se incrusta en dicha aplicación.

¿Que tipos hay?
Hay 2 tipos:
1º.-Sql Injection , la normal que te mostrara el error.
2º.-Blind Sql Injection, te mostrara un cambio en la web pero no un error.

¿Como descubrimos este fallo?
 Esto no precisa de conocimiento, en el primer caso (Sql Injection), con poner unas comillas simples (') sin paréntesis , saltara un error algo parecido a este:
 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1

Ejemplo: www.sqlvulnerable.com/vulnerable.php?id=12'

Si salta un error como ese , la web tiene un problema >:-)
Bueno a veces no les saldra ese error y dirán !COMO! el joker de The Hacker Wars! me mintio no sale nunca ese error, claro amigos , eso es porque los administradores flojos "¬_¬ ponen un code en php , para que no salgan los errores y todo parezca normal, eh! Muy inteligente verdad? :-D Pues no.....jajaja, vallamos al 2º Caso.....

En el 2º caso (Blind Sql Injection) tambien llamado ataque sql a ciegas, como se descubre este? pues muy facil, aunque no tanto como el anterior, este error, no muestra ningun mensaje de error por lo tanto al no haber un resultado especifico la web consulta a la base de datos mostrando siempre el mismo resultado... Bueno, esto se explota de la siguiente forma, con variables booleanas.
Para el que no sepan que es son muy faciles , son las que muestran en un lenguaje de programación si es Verdadero (TRUE) o Falso (FALSE).
Si muestra TRUE dará la misma pagina normal , pero si la pagina no filtra el FALSE y te muestra la pagina con alguna falla tendría un problema... pues no filtra el FALSE , error BLIND  SQL  ;-).

Esto se ve poniendo al lado del link "AND 1=1" para TRUE pero sin comillas...lógico.....ejemplo..
www.sqlvulnerable.com/vulnerable.php?id=12 AND 1=1
------------------------------------------------------------
y mostrara la web normal.

Ahora si ponemos "AND 1=0" para FALSE , nos dara la misma web modificada...
www.sqlvulnerable.com/vulnerable.php?id=12 AND 1=0
------------------------------------
Algunas Fotos para que lo vean mas claro.

Cuando muestra True:



Cuando nos muestra False:


Uiii........se le paso algo! esto nos dice que es vulnerable....


Bueno Chicos! Salu2 en el siguiente tutorial enseñaremos como explotarla con una tools. Salu2