微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL-ASP.NET Core 2.1.7中的故意注入

如何解决SQL-ASP.NET Core 2.1.7中的故意注入

因此,我是一名大学生,并且正在参加有关计算机安全性的课程。我有一个最终项目需要解决,因此我决定做一个项目,在该项目中创建自己的网站并运行DoS攻击和sql注入(我还将在自己的VM上进行缓冲区溢出攻击)。因此,我正在使用Visual Studio 2019使用ASP.NET创建一个网站。我还没有真正使用ASP.NET,我只是在尝试创建一个基本网站。到目前为止,我有一个网页,您可以在其中查看“客户”,也可以搜索一个。因此,我正在创建此代码,以便可以进行sql Inject,并且了解实现此代码的正确方法。到目前为止,这是我的代码

这是一个模型类,正在运行我的实际易受攻击的sql命令

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注释语法, “'-'作为评论的开始”

参考:https://dev.mysql.com/doc/refman/8.0/en/comments.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。