我是一名大学生,我在一堂有关计算机安全的课上。我有一个最后的项目,我必须想出来,所以我决定做一个项目,我创建自己的网站,并运行一个DoS攻击和SQL注入(我还将对我自己的VM进行缓冲区溢出攻击)。因此,我正在使用VisualStudio2019创建一个使用ASP.NET的网站。我并没有真正与ASP.NET合作,我只是想做一个基本的网站。到目前为止,我有一个网页,您可以查看“客户”,您可以搜索一个。因此,我正在创建这段代码,以便我可以使用SQL注入,并且我理解实现该代码的正确方法。这是到目前为止我的代码
这是一个实际运行易受攻击的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 Customers WHERE firstName LIKE '%userInput%' 是脆弱的部分。在这里,我应该能够输入‘;-并得到所有客户的名单。我没有得到所有客户的列表,而是得到了一个错误(这是很棒的安全选项,但是这个项目的全部目的是跳过安全性!)
错误:
MySql.Data.MySqlClient.MySqlException:“SQL语法出现错误;请检查与MySQL服务器版本相对应的手册,以便在第1行使用接近”-%“的正确语法。”
我一直试图找出如何绕过这个错误,得到我需要的查询。我一直试图使用不同版本的依赖项,但我不知道是什么阻碍了我执行注入。下面列出了我的相对依赖关系:
8.0.22
我的服务器运行在一个AWS实例上,其运行的MySQL版本为5.5 (最低我可以这么做;也许这就是问题所在?)
这是我第一次发帖,所以希望我做的对。如果你需要更多的信息,我会很乐意张贴它。任何帮助都是非常感谢的!
发布于 2020-10-24 07:33:21
In MySQL,-- (双破折号)注释样式要求第二个破折号后面至少有一个空格或控制字符(例如空格、制表符、换行符等)。此语法与标准SQL注释语法略有不同,如1.7.2.4节中所讨论的,“‘-’作为注释的开头”
https://stackoverflow.com/questions/64510910
复制相似问题