Ho una semplice stored procedure:
create procedure [dbo].[test]
@str varchar (100)
AS
BEGIN
select * from [AdventureWorks2012].[HumanResources].[Employee] where JobTitle like '%' + @str +'%'
END
GO
Dato questo tipo di codice, in che modo posso sfruttarlo?
Mi è sempre stato detto che gli exploit del tipo
exec test ''' ''; truncate table [AdventureWorks2012].[HumanResources].[Employee];--'
Dovrebbe funzionare, ma ora è la prima volta che ho la possibilità di provarlo praticamente e non funziona.
La spiegazione che mi è stata data è stata
''' ''; truncate table [AdventureWorks2012].[HumanResources].[Employee];--'
Quando concatenato con la query diventa
select * from [AdventureWorks2012].[HumanResources].[Employee] where JobTitle like '%' + ' ' ; truncate table [AdventureWorks2012].[HumanResources].[Employee];-- + '%'
Quindi, la query SELECT
verrà eseguita con il jobtitle alla ricerca di qualsiasi carattere seguito da uno spazio. Il ;
termina la condizione where e quindi l'istruzione della tabella troncata viene eseguita. Dove sto andando male? Sto usando Microsoft SQL Server 2012.