使用 oledb 连接时出现 SQL 注入语法错误 (.NET)

SQL injection syntax error when using oledb connection (.NET)

提问人:Ido Shemi 提问时间:4/14/2023 最后编辑:Bill KarwinIdo Shemi 更新时间:4/14/2023 访问量:208

问:

我正在尝试对oledb连接进行SQL注入,但是当我输入时出现语法错误。value #

我不明白为什么会发生这种情况,因为做:正在工作。value' or '1'='1

OleDbConnection Con = new OleDbConnection();
Con.ConnectionString = @"provider=microsoft.ACE.oledb.12.0;data source=" + Server.MapPath("") + "\\database.accdb";

Con.Open();

string sqlstring = "select * from users WHERE myusername = '"+InputUserName.Text+"' AND mypassword ='"+InputPassWord.Text+"'";

OleDbCommand Cmd = new OleDbCommand(sqlstring, Con);
OleDbDataReader dr1 = Cmd.ExecuteReader();

if (dr1.HasRows)
{
    dr1.Read();
    Response.Redirect("connectionSuccesful.aspx");
}
else
    Label1.Text = "not valid username or password";

我也试过了:但它再次给我带来了语法错误。我正在使用microsoft access数据库并使用oledb reader。 string sqlstring = $"select * from sellers WHERE Myusername = '{InputUserName.Text}' -- AND Mypassword ='{InputPassWord.Text}'";

C# asp.net MS-Access SQL 注入

评论

6赞 Brad 4/14/2023
不要像这样构建 SQL 字符串。使用参数。learn.microsoft.com/en-us/dotnet/api/......
0赞 Bill Karwin 4/14/2023
这是针对 Microsoft SQL Server 的吗?AFAIK 不是 Transact-SQL 语法中的注释领导者。请参阅 learn.microsoft.com/en-us/sql/t-sql/language-elements/...#
0赞 Ido Shemi 4/14/2023
我正在使用Microsoft Access数据库,这是我正在学习的课程中的一个项目,讲师要求我在登录页面中进行sql注入,然后使用参数制作另一个版本。
0赞 Gustav 4/14/2023
原始代码中的语法是正确的,并将接受作为 InputPassWord.Text' 值的一部分。因此,请提供失败的实际代码。此外,这是关于连接,而不是注入——这是另一个球赛。#InputUserName.Text`` or
1赞 Erik A 4/14/2023
您想注射什么?如果要注入新语句(例如,在 后面加上 ),则不能在 Access 中执行此操作,因为它一次只允许一个语句。SELECTDELETE

答:

0赞 Özgür Güzeldereli 4/14/2023 #1

根据这个SQL#符号是什么意思,它是如何使用的?,该符号是用来为临时表添加前缀的。它不用于注释 SQL 表达式的其余部分,您应该在注释该行的其余部分时尝试。#--

编辑:仅用作MySQL中的注释(再次根据上面的StackOverflow问题)#

编辑2:根据以下问题如何在Microsoft Access中注释SQL代码? 您不能在 Microsoft Access 数据库中有注释,这就是您收到语法错误的原因。

评论

0赞 Ido Shemi 4/14/2023
我尝试使用,但它仍然给我语法错误。value' --
0赞 Özgür Güzeldereli 4/14/2023
@IdoShemi 使用 Access 数据库检查我关于您的编辑
0赞 Ido Shemi 4/14/2023
那么有没有另一种方法可以在不注释的情况下进行SQL注入
0赞 Özgür Güzeldereli 4/14/2023
@IdoShemi是的,我想这是正确的。但我并不完全是SQL注入方面的专家,所以你可能需要咨询谷歌