浅谈.NET应用程序SQL注入
来源:互联网 发布:ubuntu 启动过程 黑屏 编辑:程序博客网 时间:2024/05/18 02:25
0x01科普
通过特殊的手法将普通的SQL语句,修改成恶意的SQL语句,最终达到入侵者的目的.(个人理解)
0x02演练
1.准备工具:SQL SERVER ,Visual Studio
2.数据库脚本和.net代码(c#)
0x02演练
1.准备工具:SQL SERVER ,Visual Studio
2.数据库脚本和.net代码(c#)
3.SqlServer Profiler
SQL脚本代码:
SQL脚本代码:
下面是一段验证用户名密码的C#代码:
我们来测试一下
输入正确的账号密码:
admin admin
登录成功
输入错误的账号密码:
test test
登录失败
我们在用户名输入:' or 1=1--
密码:123
会发现也能登录成功!
数据库中没有这个账号密码,还会登录成功?
why?
0x03剖析
我们来剖析一下SQL语句的运行过程
利用我的SQL语句跟踪工具(SQL Server Profiler)
单击链接
运行
我们来看一下输正确的账号密码SQL语句的样子
在我们的SQL Server中执行看看,有符合条件的数据
我们再来看看输入错误的账号密码SQL语句的样子
在我们的SQL Server中执行看看,没有符合条件的数据
我们再来看看最后一次的输入的账号密码的SQL语句的样子
我们来看看图片中的SQL语句我们的上面的SQL语句对比一下
我们会发现我们输入的用户名变成了空,后面多了or 1=1 --'这又是为什么,什么原因导致的???
到离这里我们就应该看看这一段代码:
我们可以看出SQL是中的name和pass是变量是用户输入的账号和密码
我们来看一下输入的用户名:' or 1=1 --
那么用户如输入'的时候就会自动把name = ''闭合
而 or 1=1 将where 条件永远成立
--在SQL是注释的意思会将后面的SQL语句注释掉!!!
那么我们就可以这么认为SQL语句到最后是这个样子的
0x04防御
有攻击的方式是会有防御的方式
据我所知常用的有俩种方式:
1.通过SQLParameter
好处:预编译SQL语句防止被转意
用法:
@符号代表的参数,我们把拼接的方式换成了参数的形式
2.存储过程
1.首先在数据库中创建存储过程
2. 调用存储过程
避免SQL注入
文章来源:http://bbs.ichunqiu.com/thread-7636-1-1.html?from=jiuge
0 0
- 浅谈.NET应用程序SQL注入
- 浅谈sql注入
- 浅谈SQL注入
- 浅谈SQL注入基础
- sql注入浅谈
- 浅谈SQL注入
- 浅谈SQL注入(拼接字符串注入)
- 浅谈如何防御Sql注入
- 【数据库】SQL代码注入浅谈
- 浅谈Web安全-SQL注入
- 应用程序中的高级SQL注入
- .net 防止sql注入
- asp.net Sql注入
- SQL Server应用程序中的高级SQL注入
- SQL Server应用程序中的高级SQL注入
- SQL Server应用程序中的高级SQL注入
- SQL Server应用程序中的高级SQL注入
- SQL Server应用程序中的高级SQL注入
- Java的基本输入输出
- Super Ugly Number
- 进阶项目6.1-两人生日差
- HDU 5755 Gambler Bo
- Java之类的继承
- 浅谈.NET应用程序SQL注入
- hdoj4004The Frog's Games
- OctoberCms Forms
- 运动的八卦图
- Programmer error or hard
- leetcode Design Hit Counter
- Question( category_id 关联 category_name)
- 【priority_queue<int,vector<int>,greater<int>>优先队列 按照由小到大顺序】
- The Relationship types