如何解决SQL-ASP.NET Core 2.1.7中的故意注入
因此,我是一名大学生,并且正在参加有关计算机安全性的课程。我有一个最终项目需要解决,因此我决定做一个项目,在该项目中创建自己的网站并运行DoS攻击和sql注入(我还将在自己的VM上进行缓冲区溢出攻击)。因此,我正在使用Visual Studio 2019使用ASP.NET创建一个网站。我还没有真正使用ASP.NET,我只是在尝试创建一个基本网站。到目前为止,我有一个网页,您可以在其中查看“客户”,也可以搜索一个。因此,我正在创建此代码,以便可以进行sql Inject,并且了解实现此代码的正确方法。到目前为止,这是我的代码
using MysqL.Data.MysqLClient;
using System;
using System.Collections.Generic;
using System.Text;
namespace bullAndTrue.Models
{
public class CustomerContext
{
public string ConnectionString { get; set; }
public CustomerContext(string connectionString)
{
this.ConnectionString = connectionString;
}
private MysqLConnection GetConnection()
{
return new MysqLConnection(ConnectionString);
}
public List<Customer> GetCustomers(string name)
{
List<Customer> customerList = new List<Customer>();
using(MysqLConnection conn = GetConnection())
{
conn.open();
MysqLCommand myCmd = new MysqLCommand("SELECT * FROM Customers WHERE firstName LIKE '%" + name + "%'",conn);
using(var reader= myCmd.ExecuteReader())
{
while(reader.Read())
{
customerList.Add(new Customer()
{
idCustomers = Convert.ToInt32(reader["idCustomers"]),firstName = reader["firstName"].ToString(),lastName = reader["lastName"].ToString(),address = reader["address"].ToString()
});
}
}
}
return customerList;
}
}
}
在这里,我们可以看到我的命令“ SELECT * FROM FROM FROM WHERE firstName LIKE'%userInput%'是易受攻击的部分。在这里,我应该能够输入';-并获得所有客户的列表。相反,在所有客户的列表中我得到了一个错误(这很棒,其中有安全选项,但这是该项目的全部要点是跳过安全性!)
错误: MysqL.Data.MysqLClient.MysqLException:'您的sql语法错误;检查与您的MysqL服务器版本相对应的手册以获取正确的语法,以在第1行的'-%'附近使用
我一直在尝试找出如何绕过此错误并获取所需的采石场的方法。我一直在尝试使用不同版本的依赖项,但是我无法弄清楚是什么阻碍了我进行注入。这是我的相对依赖性的列表:
MysqL.Data版本= 8.0.22 Microsoft.AspNetCore版本= 2.1.7
我的服务器在一个AWS实例上运行,并且它在运行MysqL 5.5版(至少我可以去;也许是问题所在?)
这是我第一次发布,希望我做得对。如果您需要更多信息,我们将很乐意发布。任何帮助表示赞赏!
解决方法
在MySQL中,-(双破折号)注释样式需要第二个破折号 后面至少要有一个空格或控制字符(例如 (如空格,制表符,换行符等)。该语法略有不同 摘自1.7.2.4节中讨论的标准SQL注释语法, “'-'作为评论的开始”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。