首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET内核2.1.7中的

问ASP.NET内核2.1.7中的
EN

Stack Overflow用户
提问于 2020-10-24 07:13:23
回答 1查看 259关注 0票数 2

我是一名大学生,我在一堂有关计算机安全的课上。我有一个最后的项目,我必须想出来,所以我决定做一个项目,我创建自己的网站,并运行一个DoS攻击和SQL注入(我还将对我自己的VM进行缓冲区溢出攻击)。因此,我正在使用VisualStudio2019创建一个使用ASP.NET的网站。我并没有真正与ASP.NET合作,我只是想做一个基本的网站。到目前为止,我有一个网页,您可以查看“客户”,您可以搜索一个。因此,我正在创建这段代码,以便我可以使用SQL注入,并且我理解实现该代码的正确方法。这是到目前为止我的代码

这是一个实际运行易受攻击的SQL命令的模型类。

代码语言:javascript
复制
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;
        }
    }
}

在这里我们可以看到我的命令

代码语言:javascript
复制
SELECT * FROM Customers WHERE firstName LIKE '%userInput%' 

是脆弱的部分。在这里,我应该能够输入‘;-并得到所有客户的名单。我没有得到所有客户的列表,而是得到了一个错误(这是很棒的安全选项,但是这个项目的全部目的是跳过安全性!)

错误:

MySql.Data.MySqlClient.MySqlException:“SQL语法出现错误;请检查与MySQL服务器版本相对应的手册,以便在第1行使用接近”-%“的正确语法。”

我一直试图找出如何绕过这个错误,得到我需要的查询。我一直试图使用不同版本的依赖项,但我不知道是什么阻碍了我执行注入。下面列出了我的相对依赖关系:

8.0.22

  • Microsoft.AspNetCore
  • MySql.Data Version= Version= 2.1.7

我的服务器运行在一个AWS实例上,其运行的MySQL版本为5.5 (最低我可以这么做;也许这就是问题所在?)

这是我第一次发帖,所以希望我做的对。如果你需要更多的信息,我会很乐意张贴它。任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-24 07:33:21

In MySQL,-- (双破折号)注释样式要求第二个破折号后面至少有一个空格或控制字符(例如空格、制表符、换行符等)。此语法与标准SQL注释语法略有不同,如1.7.2.4节中所讨论的,“‘-’作为注释的开头”

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64510910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档