gpt4 book ai didi

sql-injection - 这容易受到 SQL 注入(inject)的攻击吗?

转载 作者:行者123 更新时间:2023-12-01 23:33:47 26 4
gpt4 key购买 nike

我们正在使用引用 MSSQL 中的存储过程的第三方产品。这个存储过程看起来像这样:

CREATE PROCEDURE [dbo].[example]
@a nvarchar(255)
AS
BEGIN
SET NOCOUNT ON;

DECLARE @strSQL nvarchar(3000)
SET @strSQL = 'SELECT * FROM test WHERE x = ''1'''

IF IsNull(@a, '') <> ''
SET @strSQL = @strSQL + ' AND a = ''' + @a + ''''
EXEC(@strSQL)
END

这个存储过程实际上并没有将其结果输出到网站,但我仍然确定它容易受到 SQL 注入(inject)的攻击。我可以输入 t' + 'est 并获得与输入 test 相同的结果。

我们显然需要让他们改变这一点,但我需要先证明这是一个问题。我怎样才能通过将 SQL 作为 @a 传递到表中来做一些事情,比如在表中插入一行?如果我这样做

'; INSERT INTO blah VALUES('test')

然后我得到:

Incorrect syntax near ';'.

最佳答案

是的,它是易受攻击的,但碰巧你注入(inject)了错误的文本,产生了语法错误:

SELECT * FROM test WHERE x = "1" AND a =; INSERT INTO blah VALUES('test')
^--your syntax error

如果您的注入(inject)文本是:

a; INSERT blah blah blah
^---

那么您最终会在 blah 表中得到两个有效查询和 test

关于sql-injection - 这容易受到 SQL 注入(inject)的攻击吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13568992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com