前言:
 
前面我们已经简单的剖析了一下.NET应用程序SQL注入。没有看过的朋友移步:http://bbs.ichunqiu.com/thread-7636-1-1.html,在上一篇文章我们已经了解过SQL的【小危害】简单的登录绕过.

思考:
在上一篇文章中我们可以通过【注释】和【条件成立】的情况下修改掉我们的SQL语句:
我们很明显的发现SQL语句发生了很大的变化后面验证用户的条件【不翼而飞】,
那么我们来想想既然我们可以修改掉我们SQL语句那么我们是不是可以在加一条SQL语句?
实验:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;namespace SQLTmp
{class Program{//数据库连接字符串public static String strCon = "Data Source=.;Initial Catalog=SQLTMP;Integrated Security=True";//创建数据库连接对象static SqlConnection SqlCon = new SqlConnection(strCon);static void Main(string[] args){Console.WriteLine("请输入用户名:");String name = Console.ReadLine();Console.WriteLine("请输入密码:");String pass = Console.ReadLine();try{Program p = new Program();//打开数据库连接
                p.Open();string sql = "SELECT COUNT(*) FROM admin WHERE name = '" + name + "'AND pass = '" + pass + "'";SqlCommand sqlcom = new SqlCommand(sql, SqlCon);int i = (int)sqlcom.ExecuteScalar();if (i > 0){Console.WriteLine("登录成功!");}else{Console.WriteLine("登录失败!");}Console.ReadLine();}catch (Exception){throw;}finally{//关闭数据库连接
                pass.Clone();}}//打开数据库连接public void Open(){//关闭状态下打开数据库连接if (SqlCon.State == ConnectionState.Closed){SqlCon.Open();}//中断情况下打开数据库连接if (SqlCon.State == ConnectionState.Broken){//关闭
                SqlCon.Close();SqlCon.Open();}}//关闭数据库连接public void Close(){if (SqlCon.State == ConnectionState.Open || SqlCon.State == ConnectionState.Broken){SqlCon.Close();}}}
}

这是我们上一篇文章中的C#代码。
我们可以来看看一次执行多条SQL语句.

实验一:

通过登录该修改登录密码任意修改,我们把用户修改为  
我们可以清楚的看到用户的密码被修改成了123456
我们运行SQL Server Profiler抓取运行的SQL语句
细心的朋友会发现这是俩条SQL语句。

而且第一条就是我们修改后的SQL语句,后面的是SQL更新语句用来更新数据的(更新了密码),而【;】就代表一条SQL语句的结束.当然我们在这里也可以更新用户名或者其他表中的任何数据
 
实验二:

通过实验一,我们可以看到可以直接更新本数据库里面的数据.那么问题来了我更新的数据只是这个数据库里面的我们能不能更新一下其他数据库脸的数据。这就是我们要做的实验二,在这里我们创建一个数据库并写入一条数据:
我们来构造用户名
我们可以清楚可以看到密码被修改为:0nise
我们打开SQL Server Profiler看看抓取的SQL代码
我们阔以看到这段代码中多了use testAdmn这是什么鬼?:
use testAdmin //use (数据库名字)使用某个数据库,
这就是传说中的垮裤修改数据。
 
实验三:
 
通过上面我们可以来修改任何数据那么?我们可以不可以来删除?
我们删除本数据库下面的:admin1表
先构造代码:
我们可以看到原来的admin1表就已经删除不见了【SYSOBJECTS是数据库的系统表】
我们来看看SQL Server Profiler抓取的SQL语句
我们通过drop table admin1来删除表【drop table (表名) 用来删除某一张表】,我们也可以参照实验二的方式来垮裤删除任何表。
 
实验四:
 
通过实验三我们可以删除任何表以及垮裤删除任何表,那我们能不能来删除其他数据库?
我们拿testAdmin数据来做实验
构造代码
testAdmin已经被删删除了。。。。
老套路打开SQL Server Profiler查看抓取的SQL语句
use master 是什么?
数据库
作用
Master
Master数据库记录SQL Server 系统的所有系统级别信息,包括如下三类:
l 所有的登录账户和系统配置设置
l 所有其他的数据库及数据库文件的设置
l SQL Server的初始化信息

Tempdb
Tempdb数据库保存所有的临时表和临时存储过程,以及临时生成的工作表
Tempdb数据库在SQL Server每次启动时都重新创建

Model
Model数据库可用于在系统上创建所有的数据库的模版,例如,使用SQL语句创建一个新的空白数据库,将使用默认中规定的默认值来创建
Msdb
Msdb数据库提供SQL Sever代理程序调度警报、作业以及记录操作时使用,另外有关数据库备份和还原,也会写在该数据库里面
Resource
Resource数据库是一个特殊的数据库,并且是一个只读的数据库,它包含了SQL Server中的所有的系统对象,这些对象物理上存在Resource数据库,但是在逻辑上,它们却出现在每个数据库的sys架构中,所以,Resource数据库是”隐藏”了的数据库,我们无法使用查看所有数据库的SQL命令等方法它
使用Matser系统数据库来删除testAdmin数据库
 
总结:
本篇文章是深入分析的危害,当然我也可以杜绝这种情况发生。
防御方案:http://bbs.ichunqiu.com/thread-7636-1-1.html
1.交流:
.NET应用程序中的SQL注入已经基本上结束了。如果大家有更好的【姿势】可以在下方留言多多交流。。。。。
浅谈.NET应用程序SQL注入:http://bbs.ichunqiu.com/thread-7636-1-1.html
 
2.声明:
本文讨论的技术仅用于研究学习技术交流,严禁用于非法行为和破坏行为,否则造成的一切法律责任与作者以及本网站无关。
 
相关链接:http://bbs.ichunqiu.com/thread-8005-1-1.html

深入分析.NET应用程序SQL注入【危害】相关推荐

  1. sql注入危害利用及防护详解+sqlmap使用

    来自于个人日常学习总结,欢迎大家一起来学习交流,如要转载请标明出处. sql注入危害 数据库信息泄露 网页篡改: 通过操作数据库对网页进行篡改,嵌入木马连接 数据库被恶意操作:被攻击.管理员账户被更改 ...

  2. 【网络安全入门】SQL注入是什么?SQL注入危害有哪些?

    SQL注入是当今最危险.最普遍的基于Web的攻击方式之一,那么你知道SQL注入危害有哪些吗?SQL注入的位置包括什么?具体内容请看下文: SQL注入是什么? SQL注入是比较常见的网络攻击方式之一,主 ...

  3. MySQL攻略 - JDBC程序SQL注入,PreparedStatement接口详解与案例练习,JDBC相关API小结

    文章目录 SQL注入 Statement详解 基本介绍 Navicat演示SQL注入 JDBC演示SQL注入 PreparedStatement详解 基本介绍 预处理好处 预处理案例(selete语句 ...

  4. sql注入***原理

    sql注入***原理: 是数据库的安全漏洞.网站服务器端语言自身的缺陷以及程序设计过程中,对安全方面,考虑不足或者是不全面导致对输入字符串中夹带的sql指令的检查,从而是数据库受到***,包括数据库的 ...

  5. SEED实验系列:Collabtive系统SQL注入实验

    本课程原文链接为:https://www.shiyanlou.com/courses/291,实验楼已经为此课程的实践提供了在线实验环境,想要尝试体验的,可以直接前往实验楼进行实践操作. 你能够喜欢我 ...

  6. 2017-2018-2 20179216 《网络攻防与实践》 SQL注入攻击

    1. SQL语言 结构化查询语言(Structured Query Language)简称SQL:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系 ...

  7. Web安全之SQL注入漏洞学习(一)

    Web程序三层架构 三层架构主要是指将业务应用规划为的表示层 UI.数据访问层 DAL 以及业务逻辑层 BLL,其分层的核心任务是"高内聚低耦合"的实现.在软件体系架构设计中,分层 ...

  8. SQL注入-01-什么是SQL注入?

    什么是SQL注入? 1.正常的web端口访问 正常访问是web传入程序设计者所希望的参数值,由程序查询数据库完成处理后,呈现结果页面给用户. 2.SQL注入是如何访问? (1)SQL注入也是正常的we ...

  9. 通过sql注入窃取用户数据库信息

    一.SQL注入的定义 SQL Injection ,即SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害是巨大的,常常会导 ...

  10. 注入——sql注入命令

    SQL注入漏洞防御 SQL注入-结构化查询语言,是一种特殊的编程语言,用于数据库的标准数据库查询. SQL 注入(SQL Injection)是一种常见的Web 安全漏洞.攻击者利用这个漏洞,可以增删 ...

最新文章

  1. easyui datagrid 后台分页,前端如何处理
  2. js for循环给object数组赋值
  3. WeWork通过向225,000个社区征税来拼命地从Meetup.com榨取现金
  4. php curl 数据采集 空,PHP curl从网站返回空数组的数据
  5. leetcode练习——栈(1)
  6. python学习-练习题
  7. 在c语言中输入三个数据类型,【C语言讲解】第二章:数据类型3
  8. vue中v-for的使用以及注意事项
  9. 【机器学习系列】隐马尔科夫模型第三讲:EM算法求解HMM参数
  10. 用.htaccess禁止某IP访问
  11. Vue中将十六进制颜色格式转换为RGB格式
  12. 万字拆解孩子王:充满矛盾的母婴零售之王
  13. 什么?都1202年了还不懂k8s和容器的关系?!这份k8s指南快拿走不谢!
  14. 滴滴校招笔试题及解析
  15. Spark3 读写 S3 Parquet, Hive, Hudi
  16. 课堂问题:一个凸函数的性质
  17. SpringCloud 实战笔记
  18. 题解 P2089 【烤鸡】
  19. Vivado综合报错及解决方法
  20. shaderTextView 闪动文字,static{}(静态代码块)与{}(非静态代码块)的异同点

热门文章

  1. python marshal 对象序列化和反序列化
  2. java和C#的相同之处笔记
  3. 宝刀不老: Cookie (转)
  4. Mysql数据库分库和分表方式(常用)
  5. 解决Oracle EM 乱码问题
  6. 分组在re模块中的使用
  7. ThinkPHP的四种URL模式 URL_MODEL
  8. arcgis server10.2.2发布地图基础服务的具体步骤
  9. 网页框架模版(上、下(左、中、右))
  10. 实验7(2019.6.18)