Tengo un procedimiento almacenado simple:
create procedure [dbo].[test]
@str varchar (100)
AS
BEGIN
select * from [AdventureWorks2012].[HumanResources].[Employee] where JobTitle like '%' + @str +'%'
END
GO
Dado este tipo de código, ¿de qué manera puedo explotarlo?
Siempre me han dicho que las hazañas del tipo
exec test ''' ''; truncate table [AdventureWorks2012].[HumanResources].[Employee];--'
Debería funcionar, pero ahora es la primera vez que tengo la oportunidad de probarlo de manera práctica y no funciona.
La explicación que me dieron fue que
''' ''; truncate table [AdventureWorks2012].[HumanResources].[Employee];--'
Cuando se concatena con la consulta se convierte en
select * from [AdventureWorks2012].[HumanResources].[Employee] where JobTitle like '%' + ' ' ; truncate table [AdventureWorks2012].[HumanResources].[Employee];-- + '%'
Por lo tanto, la consulta SELECT
se ejecutará con jobtitle buscando cualquier carácter seguido de un espacio. El ;
termina la condición donde y luego se ejecuta la instrucción de tabla truncada. ¿A dónde me voy mal? Estoy usando Microsoft SQL Server 2012.