C#和SQl 注入字符串的攻击 和 防止注入字符转的攻击

--SQl中
--建立ren的数据库,插入一条信息
create database ren
go
use ren
go
create table xinxi
(
code nvarchar(20) primary key,--编号
name nvarchar(50)--名字
)
insert into xinxi values(‘1001‘,‘zhangsan‘)
            for (; ; )
            {

                bool b = false;//利用中间变量
                Console.Write("请输入要修改的编号:");
                string no = Console.ReadLine();
                //查询展示
                SqlConnection zhancnn = new SqlConnection("server=.;database=ren;user=sa;pwd=123");//连接
                //操作的语句
                SqlCommand zhancmd = zhancnn.CreateCommand();
                zhancmd.CommandText = "select * from xinxi where code=‘" + no + "‘";
                //执行操作的语句
                zhancnn.Open();
                SqlDataReader ss = zhancmd.ExecuteReader();
                if (ss.HasRows)//数据库中是否有要修改的数据
                {
                    b = true;
                }
                zhancnn.Close();
                if (b == true)//如果有要修改的数据
                {

                    Console.Write("找到【" + no + "】的信息,请输入要修改的名字:");
                    string mingzi = Console.ReadLine();
                    zhancmd.CommandText = "update xinxi set name=‘"+mingzi+"‘ where code=‘"+no+"‘";
                    zhancnn.Open();
                    zhancmd.ExecuteNonQuery();
                    zhancnn.Close();
                    Console.WriteLine("修改完毕!");
                    break;
                }
                else//如果没有要修改的数据
                {
                    Console.WriteLine("数据库中没有该条信息,请输入正确的编码!!");
                }

            }
            Console.ReadLine();

执行时,,注意,我就要输入了:

然后查询数据库,查询全部,就成为了

为了防止这种注入文字攻击,我们就需要:

//C#中 

for (; ; )
            {

                bool b = false;//利用中间变量
                Console.Write("请输入要修改的编号:");
                string no = Console.ReadLine();
                //查询展示
                SqlConnection zhancnn = new SqlConnection("server=.;database=ren;user=sa;pwd=123");//连接
                //操作的语句
                SqlCommand zhancmd = zhancnn.CreateCommand();
                zhancmd.CommandText = "select * from xinxi where code=‘" + no + "‘";
                //执行操作的语句
                zhancnn.Open();
                SqlDataReader ss = zhancmd.ExecuteReader();
                if (ss.HasRows)//数据库中是否有要修改的数据
                {
                    b = true;
                }
                zhancnn.Close();
                if (b == true)//如果有要修改的数据
                {

                    Console.Write("找到【" + no + "】的信息,请输入要修改的名字:");
                    string mingzi = Console.ReadLine();
                    zhancmd.CommandText = "update xinxi set [email protected] where [email protected];";//@变量名:占位符。注意:[email protected]没有引号
                 zhancmd.Parameters.Clear();//必须先清空里面所有内容
                 zhancmd.Parameters.Add("@mingzi",mingzi);//类似哈希表。第一个值随便取,必须跟上边一致;第二个是变量
                 zhancmd.Parameters.Add("@no",no);
                    zhancnn.Open();
                    zhancmd.ExecuteNonQuery();
                    zhancnn.Close();
                    Console.WriteLine("修改完毕!");
                    break;
                }
                else//如果没有要修改的数据
                {
                    Console.WriteLine("数据库中没有该条信息,请输入正确的编码!!");
                }

            }
            Console.ReadLine();//如果在执行窗口输入上跟上次一样的内容,那么输出的结果就是把”那句注入的代码“和”要改的name“ 作为一整个字符串进行处理。
时间: 2024-10-26 12:41:10

C#和SQl 注入字符串的攻击 和 防止注入字符转的攻击的相关文章

WAF——针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入、XSS跨站、Webshell上传、命令注入、非法HTTP协议请求、非授权文件访问等

核心概念 WAF Web应用防火墙(Web Application Firewall),简称WAF. Web攻击 针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入.XSS跨站.Webshell上传.命令注入.非法HTTP协议请求.非授权文件访问等.

【sql注入】简单实现二次注入

[sql注入]简单实现二次注入 本文转自:i春秋社区 测试代码1:内容详情页面 [PHP] 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?php     include('./connect.php'); //引入数据库配置文件     $id=$_GET['id'];     $select_sql="SELECT * FROM article WHERE title='

Sql 注入详解:宽字节注入+二次注入

sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshell 或者直接执行系统命令 (2) 权限较小时,通过注入获得管理员密码信息,或者修改数据库内容进行钓鱼等 常出现的地方: 登录页面.获取HTTP头(user-agent.client-ip等).订单处理等,HTTP头里面client-ip 和 x-forward-for 常出现漏洞,在涉及购物车的地方

SQL注入测试平台 SQLol -5.DELETE注入测试

访问首页的delete模块,http://127.0.0.1/sql/delete.php,开始对delete模块进行测试. delete语法: DELETE FROM [users] WHERE [username] = ['1'] 几个位置都可能存在注入,这里只演示一种. 下面演示注入到不同位置的方法. 一.String in WHERE clause 构造POC: ' or updatexml(1,concat(0x7e,(database()),0x7e),0) or ' 获取数据库 二

SQL语句字符串处理大全

常用的字符串函数有: 一.字符转换函数 1.ASCII() 返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用''括起来,但含其它字符的字符串必须用''括起来使用,否则会出错. 2.CHAR() 将ASCII 码转换为字符.如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL . 3.LOWER()和UPPER() LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写. 4.STR() 把数值型数据转换为字符型数据

SQL注入测试平台 SQLol -3.INSERT注入测试

访问首页的insert模块,http://127.0.0.1/sql/insert.php,开始对insert模块进行测试. insert语句: INSERT INTO [users] ([username], isadmin) VALUES (['1'], [0]) 接收的参数可能拼接到上述语句中[]的任一个位置. 在这里我们一般使用 1.报错注入 2.盲注(布尔类型.时间延迟类型) 有的注入点可以同时使用多种方法注入,这里只演示一种. 下面演示注入到不同位置的方法. 一.Value(stri

SQLSERVER 根据传入的参数拼接sql语句字符串,反馈结果集

ALTER PROCEDURE [dbo].[usp_visit_detail](@siteid BIGINT, @Startime VARCHAR(15), @Endtime  VARCHAR(15), @Aflag  INT = 10,                                    --初始值为10,非10,则表示有传入参数 @Area   VARCHAR(20) = 'N',               -- --初始值为N,非N,则表示有传入参数 @Nflag  

sql sever 字符串函数

SQL Server之字符串函数 以下所有例子均Studnet表为例:  计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写 select lower('I AM A STUDENT !')select upper('i am a student !') 截去字符串左.右侧空格                      

SQL截取字符串

SQL截取字符串 SUBSTRING 返回字符.binary.text      或      image      表达式的一部分.有关可与该函数一起使用的有效      Microsoft®      SQL      Server™      数据类型的更多信息,请参见数据类型. 语法 SUBSTRING      (      expression      ,      start      ,      length      ) 参数 expression 是字符串.二进制字符串.

SQL Server字符串左匹配

在SQL Server中经常会用到模糊匹配字符串的情况,最简单的办法就是使用like关键字(like语法http://msdn.microsoft.com/en-us/library/ms179859.aspx).但是如果我们使用的前后都加%的方式,是没办法用到索引进行快速查询的,所以很多情况下我们使用左匹配的方式.最常见的一个例子就是在搜索框中,用户输入了一部分关键字,系统可以通过用户的输入进行左匹配,找出相关的结果列出来.使用左匹配的好处是可以使用到SQL Server中对该字段建立的索引,