SQL注入攻击实现原理与攻击过程详解
来源:互联网 发布:淘宝卖家能删除差评吗 编辑:程序博客网 时间:2024/06/05 01:09
SQL注入攻击实现原理与攻击过程详解
SQL注入攻击主要是通过构建特殊的输入,这些输入往往是SQL语法中的一些组合,这些输入将作为参数传入Web应用程序,通过执行 SQL语句而执行入侵者的想要的操作,下面以登录验证中的模块为例,说明SQL注入攻击的实现方法。
在Web应用程序的登录验证程序中,一般有用户名(username)和密码(password)两个参数,程序会通过用户所提交输入 的用户名和密码来执行授权操作。其原理是通过查找user表中的用户名(username)和密码(password)的结果来进行授权访问,典型的 SQL查询语句为:
Select * from users where username='admin' and password='smith’
如果分别给username和password赋值“admin' or 1=1--”和“aaa”。 那么,SQL脚本解释器中的上述语句就会变为:
select * from users where username=’admin’ or 1=1-- and password=’aaa’
该语句中进行了两个判断,只要一个条件成立,则就会执行成功,而1=1在逻辑判断上是恒成立的,后面的“--”表示注释,即后面所 有的语句为注释语句。同理通过在输入参数中构建SQL语法还可以删除数据库中的表,查询、插入和更新数据库中的数据等危险操作:
(1)jo'; drop table authors—如果存在authors表则删除。
(2)' union select sum(username) from users—从users表中查询出username的个数
(3)'; insert into users values( 666, 'attacker', 'foobar', 0xffff )—在user表中插入值
(4)' union select @@version,1,1,1--查询数据库的版本
(5)'exec master..xp_cmdshell 'dir' 通过xp_cmdshell来执行dir命令
SQL注入攻击实现过程
SQL注入攻击可以手工进行,也可以通过SQL注入攻击辅助软件如HDSI、Domain、NBSI等,其实现过程可以归纳为以下 几个阶段:
(1)寻找SQL注入点;寻找SQL注入点的经典查找方法是在有参数传入的地方添加诸如“and 1=1”、“and 1=2”以及“’”等一些特殊字符,通过浏览器所返回的错误信息来判断是否存在SQL注入,如果返回错误,则表明程序未对输入的数据进行处理,绝大部分情 况下都能进行注入。
(2)获取和验证SQL注入点;找到SQL注入点以后,需要进行SQL注入点的判断,常常采用2.1中的语句来进行验证。
(3)获取信息;获取信息是SQL注入中一个关键的部分,SQL注入中首先需要判断存在注入点的数据库是否支持多句查询、子查询、 数据库用户账号、数据库用户权限。如果用户权限为sa,且数据库中存在xp_cmdshell存储过程,则可以直接转(4)。
(4)实施直接控制;以SQL Server 2000为例,如果实施注入攻击的数据库是SQL Server 2000,且数据库用户为sa,则可以直接添加管理员账号、开放3389远程终端服务、生成文件等命令。
(5)间接进行控制。间接控制主要是指通过SQL注入点不能执行Dos等命令,只能进行数据字段内容的猜测。在Web应用程序中, 为了方便用户的维护,一般都提供了后台管理功能,其后台管理验证用户和口令都会保存在数据库中,通过猜测可以获取这些内容,如果获取的是明文的口令,则可 以通过后台中的上传等功能上传网页木马实施控制,如果口令是明文的,则可以通过暴力破解其密码。
- SQL注入攻击实现原理与攻击过程详解
- SQL注入攻击实现原理与攻击过程详解
- SQL注入攻击原理
- sql注入攻击详解(原理理解)
- sql注入攻击详解
- SQL注入攻击[详解]
- SQL注入攻击的原理与防范
- sql注入攻击详解(二)sql注入过程详解
- sql注入攻击详解(二)sql注入过程详解
- sql注入攻击详解(二)sql注入过程详解
- sql注入攻击详解(二)sql注入过程详解
- sql注入攻击详解(二)sql注入过程详解
- sql注入攻击详解(一)sql注入原理详解
- sql注入攻击详解(一)sql注入原理详解
- sql注入攻击详解(一)sql注入原理详解
- 详解SQL 注入、XSS 攻击、CSRF 攻击
- JDBC中SQL注入与注入攻击原理
- SQL注入攻击(攻击与防范)
- Resolving a Fatal error: Call to undefined function mysql_connect() in RedHat
- 几个Jquery插件使用
- 不管你信不信,反正我是信了:放大乳房!
- 兼容主流浏览器的【表情插入】源码(转)
- USB基础知识1:USB各型插座插头封装引脚分布
- SQL注入攻击实现原理与攻击过程详解
- 朋友
- Android OpenGL 学习笔记 --开始篇
- myeclipse和eclipse中web 项目转换问题!
- ICH1/ICH2/ICH3/ICH4/ICH5/ICH6/ICH7/ICH8/ICH9的区别和联系
- 职业规划解决方案
- UNIX上C++程序设计守则(信号和线程)
- Linux下利用find和perl正则替换文件内容
- 我不是程序员2