关于Mysql + asp.net注射能支持多语句的感慨

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 在一篇老外的文章里面看到一个图表,致使Mysql + Asp.Net 注入时支持多语句真的?有点不信,测试了下:    protected void Page_Load(object se...

在一篇老外的文章里面看到一个图表,致使Mysql + Asp.Net 注入时支持多语句

真的?有点不信,测试了下:

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            Response.Write("使用Mysql.Data.MySqlClient<br /><br />");
            string myConnectionString = "server=localhost;user id=root;password=123456;database=test";
            MySqlConnection myConnection = new MySqlConnection(myConnectionString);
            string myQuery = "select * from admin where id=" + Request.QueryString["id"];
            Response.Write("SQL:" + myQuery + "<br />");
            MySqlCommand myCommand = new MySqlCommand(myQuery, myConnection);
            myConnection.Open();
            myCommand.ExecuteReader();
            myCommand.Connection.Close();
        }
        catch (MySqlException err)
        {
            Response.Write("Error:" + err.Message);
        }
       
        //try
        //{
        //    Response.Write("使用Mysql ODBC驱动<br /><br />");
        //    string myConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=test;UID=root;PASSWORD=123456;OPTION=3";
        //    string myQuery = "select * from admin where id=" + Request.QueryString["id"];
        //    Response.Write("SQL:" + myQuery + "<br />");
        //    OdbcConnection myConnection = new OdbcConnection(myConnectionString);
        //    OdbcCommand myCommand = new OdbcCommand(myQuery, myConnection);
        //    myConnection.Open();
        //    myCommand.ExecuteReader();
        //    myCommand.Connection.Close();
        //}
        //catch(OleDbException err)
        //{
        //    Response.Write("Error:" + err.Message);
        //}
    }

这里面是连接mysql常用的两个方式,一个是用Mysql.Data.MySqlClient这个类。二个try是使用更加传统的odbc方式。

Step 1:注释第一个代码段,访问http://localhost:2928/MysqlInj_test/MysqlInj_test.aspx?id=1;create table test(i int) 结果得到如下的错误信息:

“/MysqlInj_test”应用程序中的服务器错误。
--------------------------------------------------------------------------------

ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-5.0.45-community-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';create table test(i int)' at line 1

到test库下面看,表test没有被创建

Step 2:注释第二个代码段,刷新页面。页面返回

使用Mysql.Data.MySqlClient

SQL:select * from admin where id=1;create table test(i int)

继续按F5刷新这个页面,得到如下消息

使用Mysql.Data.MySqlClient

SQL:select * from admin where id=1;create table test(i int)
Error:Table 'test' already exists

跑到test库看,果然有个叫test的表被创建了。乖乖,看来老外说的是真的,但是对了一半。

原来Mysql能不能多语句执行,这和处理它的数据库驱动有很大关系。不知道是不是绝对联系,但是至少是一个重要的因素。

推而广之呢?

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
关系型数据库 MySQL
cmd中输入net start mysql 提示:服务名无效或者MySQL正在启动 MySQL无法启动
cmd中输入net start mysql 提示:服务名无效或者MySQL正在启动 MySQL无法启动
|
2月前
|
SQL 存储 缓存
SQL语句在MySQL中是如何执行的
SQL语句在MySQL中是如何执行的
59 0
|
2月前
|
关系型数据库 MySQL 数据库
Net Core备份MySQL数据库
Net Core备份MySQL数据库
50 2
|
2月前
|
关系型数据库 MySQL
报错Mysql:net start mysql 服务名无效
报错Mysql:net start mysql 服务名无效
217 0
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
9月前
|
SQL 关系型数据库 MySQL
【SQL异常】启动MySQL时发生系统错误的解决方法(net start mysql 发生系统错误 5。 拒绝访问)
【SQL异常】启动MySQL时发生系统错误的解决方法(net start mysql 发生系统错误 5。 拒绝访问)
206 1
|
关系型数据库 MySQL
使用ADO.NET 实体数据模型连接MySql
使用ADO.NET 实体数据模型连接MySql
190 0
|
开发框架 关系型数据库 MySQL
Asp.Net Core Identity+EFCore + Mysql踩坑记录
Asp.Net Core Identity+EFCore + Mysql踩坑记录
120 0
|
关系型数据库 MySQL 数据库
NET连接MySQL数据库的CRUD
NET连接MySQL数据库的CRUD
143 0
NET连接MySQL数据库的CRUD
|
关系型数据库 MySQL Java
NET连接MySQL数据库
NET连接MySQL数据库
162 0
NET连接MySQL数据库