Sql server 是否可以插入sql以删除语句?

Sql server 是否可以插入sql以删除语句?,sql-server,sql-injection,Sql Server,Sql Injection,我创建了一个使用sql server的网站,并使用此sql来删除我从querystring获取的id项: DELETE FROM tablename WHERE GUID = 'param' 例如,是否可以注入将返回db_name()的sql 我知道我只能为类似这样的select语句注入sql select name from tablename where 'parems' union all select db_name() 但是删除语句呢 我知道我可以将表插入放到表中,但在这个阶段,

我创建了一个使用sql server的网站,并使用此sql来删除我从querystring获取的id项:

DELETE FROM tablename WHERE GUID = 'param'
例如,是否可以注入将返回db_name()的sql

我知道我只能为类似这样的select语句注入sql

select name from tablename where 'parems' 
union all
select db_name()
但是删除语句呢


我知道我可以将表插入放到表中,但在这个阶段,我需要知道我是否可以获取某种数据,例如:db_name()

当然。此参数值为:

' OR ''='
将导致以下声明:

DELETE FROM tablename WHERE GUID ='' OR '' = ''

这将删除表中的所有数据。

您应该阅读&on SQL Injection

是的,查询总是返回一个结果,因此如果数据库驱动程序允许,您只需在删除后添加另一个查询即可

这样的输入:

x'; select db_name() --
将提供:

DELETE FROM tablename WHERE GUID = 'x'; select db_name() --'

我想你问是否可以使用纯删除语句。如果是,可以添加以下类似内容:

这将输出删除的行

为了避免SQL注入,您应该使用SQL参数

您应该由Erland Sommarskog读取。
DELETE Sales.ShoppingCartItem
OUTPUT DELETED.* 
WHERE ShoppingCartID = 20621;