gpt4 book ai didi

c# - 使用 Npgsql/Postgres 进行 SQL 注入(inject)

转载 作者:行者123 更新时间:2023-11-29 13:19:13 30 4
gpt4 key购买 nike

我想了解 SQLInjection 如何与 PostgresqlDb 一起工作。我在 C# 中使用 Npgsql。

所以这是我的查询,当我重命名文件夹时调用它:

cmd.CommandText = "UPDATE allfolder.folder SET folder_name = '" + foldernamenew + "'";
cmd.ExecuteNonQuery();

我现在尝试将以下值传递到文本字段中:

abcdef; INSERT INTO allfolder.folder (id, folder_name) VALUES (56,"aaaaaaa");

然后 AJAX 被触发。

我假设的输出是,表中的所有文件夹都具有 folder_name“abcdef”,并且我有一个名为“aaaaaa”的 ID 为“56”的新文件夹。事实并非如此,因为分号不被识别为分隔符,因此每个 folder_name 的名称都是“abcdef; INSERT INTO ....”。我不想在允许多查询的数据库端更改它。

所以我的问题是:

我需要如何准备实现注入(inject)的 SQL 语句?如果因为无法识别分号而不允许执行第二个 qry,是否甚至可以进行注入(inject)?

我只说 Npgsql 和 postgres。

最佳答案

正如 Laurenz 上面提到的,这应该有效:

abcdef'; INSERT INTO allfolder.folder (id, folder_name) VALUES (56,'aaaaaaa'); -- test

确保不要混用单引号和双引号。 SQL中的一个常见错误。您需要在分号前加上单引号,否则它在文本字符串中,因为您没有分隔符。

关于c# - 使用 Npgsql/Postgres 进行 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44844832/

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