Los escáneres de vulnerabilidad de aplicaciones web suelen utilizar una combinación de detección de vulnerabilidad activa y pasiva, con la mayoría de las pruebas realizadas de forma activa. Por ejemplo, si el escáner solicita una página y devuelve una cookie sin el indicador "seguro" que es esencialmente una prueba pasiva. Pero si el escáner está tratando de encontrar una vulnerabilidad XSS en un parámetro, probablemente enviará activamente varios cientos de solicitudes diferentes para probar las variaciones de ataque. Es por eso que las pruebas activas son más prominentes.
Algunos escáneres se pueden poner en modo de solo pasivo, donde se rastrean a través de la aplicación normalmente o lo monitorean utilizando la aplicación para detectar vulnerabilidades. Como es de esperar, esto tiene menos impacto en la aplicación (y es menos detectable) pero produce menos resultados.
Las cargas útiles de los ataques generalmente no son maliciosas, pero parte de eso depende de cómo reacciona la aplicación. He visto fallar aplicaciones web mal diseñadas cuando reciben datos inesperados. Para probar algo como un ataque XSS, el escáner puede intentar inyectar etiquetas de script básicas con una alerta para ver si funciona. Normalmente no van a inyectar un registrador de pulsaciones de teclas, un formulario de inicio de sesión falso, etc.
Con respecto a su pregunta de inyección de SQL, normalmente no deberían usar comandos SQL que eliminen datos o cambien las configuraciones, pero eso puede depender de la política de análisis que utilice. Algunos escáneres tienen políticas maliciosas o DoS que podrían ser más perjudiciales. También es posible que su base de datos tenga muchos registros agregados por el escáner, incluso si ninguno de los datos anteriores fue manipulado.