Instructor: ahora, para tratar de descubrir las inyecciones SQL,
debe navegar a través de su objetivo
e intentar romper cada página.
Entonces, cuando vea un cuadro de
texto o un parámetro en este
formulario, por ejemplo, página. php entonces algo igual a algo,
intenta inyectar cosas aquí.
Por lo tanto, intente usar una
cita simple, intente usar un y, o el orden por declaración, para
romper la página y hacer que se vea diferente.
Entonces, te voy a mostrar aquí un ejemplo.
Y entraré primero a la página de inicio de sesión, aquí mismo.
Y me está pidiendo que inicie sesión ahora.
Pero en realidad me registré con mi propio nombre.
Así que puedes entrar aquí y registrarte.
Tengo un nombre de usuario
llamado Zaid y una contraseña con uno dos tres cuatro cinco seis.
Primero, vamos a ...
Voy a iniciar sesión solo para mostrarte, así que.
Mi nombre de usuario
es Zaid y mi contraseña es uno dos tres cuatro cinco seis.
Y ahora he iniciado sesión
como Zaid y mi firma era aa.
No es nada realmente, solo como una prueba.
Así que voy a cerrar sesión
y volveremos a la página de inicio de sesión.
Justo aquí, tenemos la página para
que pueda intentar inyectarla.
Pero lo veremos más tarde, entonces.
Por el
momento, tenemos un ejemplo de inyección en cuadros de texto.
Por lo tanto, puede intentar inyectar en el
nombre y en la contraseña.
Así que voy a poner mi nombre como Zaid y
voy a poner una sola cita.
Así que pongo este signo en mi contraseña.
Entonces, veamos si podemos romperlo.
Y como puede ver
ahora, se muestra un error.
Y no parece un error normal, parece
que es un error de la base de datos.
Y generalmente tendrá mucha suerte si recibe un
error como este.
Ahora, por lo general, el error no será tan informativo como este.
A veces verás que la
página no está funcionando como se esperaba,
como lo esperas.
A veces solo será una
página que no se ve como debería.
Por ejemplo, si se trata de
una página de noticias, tal vez le faltará el artículo
o si se trata de un blog, tendrá una de las publicaciones
faltantes o un tipo diferente de publicaciones.
Por lo tanto, debe estar atento a lo que está cambiando.
En este ejemplo, en realidad estamos obteniendo un error realmente bueno.
Nos dice qué archivo tiene
y nos dice que hay un error en la declaración.
Y el error cerca de las comillas que agregamos.
Y también nos dice la declaración que se está ejecutando.
Esto es realmente bueno para aprender.
Porque ahora podemos ver cuál es
la declaración, que el sistema está intentando ejecutarse.
Y los sistemas que intentan hacer una selección *.
Por lo tanto, está tratando de seleccionar todo de las cuentas,
donde el nombre de usuario es igual
a Zaid y la contraseña es igual a una comilla simple.
Y tenga en cuenta que el sistema
de la aplicación web ya está
agregando comillas alrededor del nombre.
Entonces, cuando dije Zaid, agregó Zaid entre dos citas.
Y agregó la
cita simple que agregué entre otras dos citas.
Por eso tenemos tres citas aquí.
Entonces, de esto podemos, es
como el 70% del sitio web de destino, tiene una
inyección de SQL.
Todavía no estamos
seguros de si puede ejecutar lo que queremos que haga.
Entonces, ¿puedo realmente inyectar
código y hacer que se ejecute?
A ver si podemos hacer eso.
Así que el nombre de usuario será Zaid nuevamente.
Y lo que voy a
hacer con la contraseña, voy a poner mi contraseña.
Así que voy a poner uno dos tres cuatro cinco
seis y luego lo estoy cerrando.
Entonces le diré por qué
lo estoy cerrando, porque la declaración actual
a través del sistema
es select * from, to Zaid y,
es igual a.
Y abrirá una sola cita por sí mismo.
Entonces llamemos a esta contraseña S.
Entonces estamos tratando esto como una variable.
Y toma todo lo que puse aquí, lo que
sea que ponga en esta caja.
Y lo va a insertar en lugar de la contraseña S,
que es una variable.
Así que solo te estoy dando
una idea, así que necesitas poder imaginar que esto suceda.
Así que toma lo que puse allí, y lo
pondrá entre dos comillas simples.
Y se insertará allí y se
ejecutará en el sistema.
Entonces, lo que
estoy haciendo es poner uno, dos, tres, cuatro,
cinco, seis y agregaré la cita yo mismo.
Entonces, lo que voy a hacer ahora,
el código será así.
Así que va a seleccionar esto, y la
contraseña es igual a eso.
Y tengo dos citas en este momento, está bien.
Y luego lo que voy
a hacer es,
voy a decir y, uno es igual a uno.
Entonces uno es igual a uno.
Y solo estoy tratando
de ver si va a ejecutar lo que quiero que haga.
Entonces, mi declaración en este momento es: va a
ser Seleccionar * de las cuentas, donde el nombre
de usuario es igual a Zaid y
la contraseña es igual a uno dos tres cuatro cinco seis.
Y tenga en cuenta que voy a insertar esto
yo mismo, y unos iguales a uno.
Un problema del que el sistema se va a
quejar es que tenemos una cita
adicional aquí, porque la voy a insertar yo mismo en el cuadro de texto.
Entonces se va a quejar
de esto, va a decir que este es
un código abierto y nunca se ha cerrado.
Entonces, lo que voy a hacer es agregar el comentario.
Y cuando agrega un comentario,
básicamente no se ejecutará todo lo que viene
después del comentario.
Voy a usar el hash como comentario.
Entonces, cualquier cosa que llegue después del
hash que el sistema ignorará.
Así que voy a inyectar ahora, será esto, y
uno es igual a uno y esto, así que como
dije, generalmente lo que tienes aquí,
has recortado tu contraseña, o dependiendo
de cómo se llame el programa,
por solo imaginar esta.
Y voy a insertar esto adentro.
Entonces, cuando haces eso, y lo insertas dentro, así es
como se verá el código.
Entonces se verá como el nombre de usuario
correcto, la contraseña
correcta, y uno es igual a uno, lo cual es cierto.
Y entonces
no va a, va a ignorar esta cita aquí mismo.
Entonces, si pegamos
esto, deberíamos poder iniciar sesión.
Debería permitirme iniciar sesión.
Y perfecto pudimos iniciar sesión y el nombre de usuario es Zaid.
Hasta ahora, no hemos hecho nada.
¿Pero esto nos muestra que está ejecutando nuestro código?
Probemos algo diferente.
Ahora, intentemos agregar una declaración falsa.
Así que hicimos, hicimos uno igual,
y eso fue correcto y se ejecutó cuando quisimos.
Probemos uno igual a dos.
Y esto es falso.
Entonces tengo la contraseña correcta.
Y tengo el nombre de usuario
correcto, y uno es igual a dos.
Y esto debería estar mal porque es falso
uno no es igual a dos
y estoy usando un y así que todo tiene que ser verdad.
Entonces debería darme un error
a pesar de que voy a poner el nombre de usuario correcto,
y voy a poner la contraseña correcta.
Entonces pongo uno dos tres cuatro cinco seis
y uno igual a dos.
Entonces será como, oh, esto está mal.
Y como puede ver, me ha dado un error
de autenticación, un nombre de
usuario o una contraseña incorrectos, aunque recibo la contraseña correcta
y el nombre de usuario correcto.
Entonces esto confirma que este sitio web está inyectando todo
lo que queremos en la contraseña.
Entonces podemos usar el campo de contraseña para inyectar código SQL.
Y siempre estará en este formulario.
Así que vamos a poner una
contraseña y vas a poner tu código aquí, así
que solo voy a ponerlo en el código de capital aquí.
Porque vamos a poner una contraseña, cerrar la cita, y
luego poner el código que queremos ejecutar
en el sistema
aquí mismo, y se ejecutará en el sistema de destino.