Con respecto a los espacios, existen muchos métodos alternativos, como los espacios de pestañas y / ** / en bases de datos SQL, pero encontré otro método alternativo, que se ha publicado en la edición de 2006.7 del "Manual de hackers". ¡Aquí elegimos la esencia y echemos un vistazo!
Para las declaraciones de SQL, todos todavía están acostumbrados a sus espacios, como SelectIdFrom [nombre]. Si no hay espacio en el medio, se convierte en selectId de [nombre], ¡y está confundido! Además de los métodos alternativos de algunos espacios mencionados anteriormente, descubrí que usar () soportes también se pueden ejecutar en SQL. Por ejemplo, la declaración anterior se puede escribir como select (id) de [nombre], separada por soportes y puede ejecutarse normalmente.
Por ejemplo, obtenemos un punto de inyección: jmdcw.asp? Name = aa'and1 = 1and '' = ', si reemplaza la declaración de que 1 = 1 es la contraseña del administrador de la consulta: (selectAc (Mid (pase, 1,1)) de [nombre] whereId = 1)> 49. ¿Cómo usar espacios? En realidad se puede escribir así:
jmdcw.asp? name = aa'and ((select (asc (mediano (pase, 1,1))) de [nombre] donde (id = 1))> 49) y '' '='
Si los símbolos <y> están bloqueados, use entre ... y ..., y la declaración es:
jmdcw.asp? name = aa'and ((select (asc (medio (pase, 1,1))) de [nombre] donde (id = 1)) entre (40) y (50)) y '' '='
Para los lugares donde los espacios deben aparecer en el medio, use () para reemplazarlos, pero no es fácil de usar para declaraciones SQL muy complejas. El tipo de personaje mencionado anteriormente. Si es un tipo numérico, puede agregar un soporte después de ID = 1. Sin embargo, no he probado esto, por ejemplo: jmdcw.asp? Id = (1) y (seleccione ......). Debería ser factible, ¿verdad?
Jaja, resumamos y compartamos con amigos en Loveshell.