如今非常多人在入侵的过程中基本都是通过SQL注入来完毕的,可是有多少人知道为什么会有这种注入漏洞呢?有的会随口说着对于字符的过滤不严造成的。

可是事实是这样吗?我们学这些。不仅要知其然。更要知其所以然!理论联系实际,才干对我们技术的提高有所帮助。

步骤/方法

1、SQL注入。因为程序在实际使用中,为了管理庞大的数据信息,就会使用到数据库。数据库能够方便程序对全部数据信息进行统一的存储和分类组织。便于查询更新。

用户在使用程序时,程序能够自己主动通过对数据库的查询,将所获得的信息依照一定格式反馈给用户,同一时候用户也是通过交互式的对话框提交给程序数据。从而使程序依照用户想要的信息进行查询。反馈给用户想要的信息。

对于程序这样的数据库操作。先来看一段代码:

strKeyword = Request ["keyword"];

sqlQuery = "SELECT * FROM Aritcles WHERE Keywords LIKE '%" +strKeyword + "%'";

这段代码的主要目的是依照用户提交的keywordKeyword。对软件连接数据库中的文件进行搜索,找出全部包括用户keyword的文章来。如果此时。我们提交给软件“hack”这个数据,这时,“hack”这个keyword就会被传递给Keyword关键变量。接下来看看代码的运行情况。keyword获得数据“hack”后。被赋值给strKeyword变量。然后strKeyword变量被放入查询语句。此时的查询语句表现为:"SELECT
* FROM Aritcles WHERE Keywords LIKE '%hack%'",这个查询语句的意思就是从数据库Aritcles表中查询出全部包括“hack”这个keyword的文章。注意“hack”这个单词是我们提交给程序的,因此能够对其任意改动的。于是。能够这样改动,把它变为“hack'; DROP TABLE Aritcles; --”。

如今看看程序会如何处理这个外部keyword数据。

首先。查询语句变成了:“SELECT * FROM Aritcles WHERE Keywords LIKE '%hack%'; DROP TABLE Aritcles; --”。我们知道DROP
TABLE语句是在数据库操作中删除一个指定的表的意思。如今那个查询语句的意思就变了。以中间的分号为标志。分成两个部分。首先还是正常的查出全部包括hackkeyword的文章。可是接下来……

因为程序使用的数据库是微软的SQL SERVER,该数据库支持多命令语句运行。这些数据库操作的命令语句都是由分号分隔开。然后依次运行的。

这里的“DROP TABLE Aritcles; --”是一个全然合法的命令语句,“--”符号是SQL
SERVER数据库特有凝视标识,数据库不运行不论什么命令。这样,当这段查询语句运行时,就会去运行一个删除Aritcles表的数据库命令。

像这样,通过控制传递给程序数据库操作语句的关键变量来获得恶意控制程序数据库,从而获取实用信息或者制造恶意破坏的,甚至是控制用户计算机系统的漏洞,就称之为“SQL注入漏洞”。

SQL注入漏洞全然是利用了将包括了某种目的的SQL语句,通过关键变量插入到程序中正常的数据库操作语句里。

程序一旦发生注入漏洞,就会引发一系列安全隐患。

SQL注入漏洞是不分语言的,不管用什么语言开发的程序,仅仅要涉及对数据库的操作。都可能存在SQL注入漏洞。

尽管有时会由于编写语言的要求。或者程序设置环境的不同。导致SQL注入漏洞非常难被经常使用的方法利用,可是总能够找到突破的方法。

2、以下以站点程序为例。看一看SQL注入漏洞最常常被利用的地方。也是危害最大的地方。

都知道对于一个站点来说,能够说数据库存放着站点全部的信息,WEB应用程序全然是凭借数据库中的信息进行正常的执行的。一个站点程序中,最关键的一个部分就是对用户的合法性的推断,也就是看訪问它的用户是不是一个注冊的用户。

这个时候。就会要求输入username和password,然后依据输入的信息查询数据库。推断是否存在用户,并检查password是不是一致,假设一致则承认合法用户。否则将给予非法提示。以下看一段经常出如今论坛程序中的用户认证程序代码:

(1)admin1 = trim(request("name"))

(2)password1 = trim(request("password"))

(3)Set rs = Server.CreateObject ("ADODB.Recordset")

(4)sql = "select * from userlogin where name='"&admin1&"' and password='"&password1&"'"

(5)rs.Open sql,conn,1,1

(6)if rs.eof and rs.bof then

(7)response.write"<SCRIPT language=JavaScript>alert('username或password不对!')"

(8)response.write"javascript:history.go(-1)</SCRIPT>"

(9)response.end

(10)else

(11)session("name")=rs("name")

(12)session("password")=rs("password")

(13)response.Redirect("default.asp")

(14)end if

这段程序的第1和第2行分别通过Request对象获得username和password,第3行是建立一个数据库操作集对象。第4行就是将username以及password同一时候作为查询条件放入到userlogin表中进行查询,第5到第14行就是依据查询结果进行推断,弹出警告窗体。或者重定向网页。

如果数据库中有个用户guest。密码123456,那么该用户登录时,认证代码中的第4行则变为:sql = "select * from userlogin where name='guest' and password='123456'"。这是一个合法查询语句。所以用户能正常登录。反之则登录不了。

看起来这是一个比較严格的认证代码,可是事实呢?

如今,我们username提交“'or 1='1”,password也是一样,相同也会成为合法用户。这是为什么?

当我们提交表单后,代码通过Request对象获得提交的username'or 1='1以及password'or 1='1后,直接将这些数据放入了第4行的查询语句中,于是变成了这样:sql = "select * from userlogin where
name=''or 1='1' and password=''or 1='1'"。我们先看1='1',这个绝对永远为真,假设你说假。那么你回小学学数学吧,学好再来看吧,呵呵~注意在大马前面另一个or,这代表者1='1'是作为一个条件选择语句放入数据库查询的,这样不管查询语句中的username与password是否正确。都会由于or后面的1='1'代码,导致查询语句返回值永远为真,这样就是绕过了看似严格的用户认证,获得了合法的权限。

注意事项

非常多软件程序与站点程序一样,都具实用户登录这种机制,假设软件的登录功能与上述的一样存于SQL注入漏洞的话,然后,该软件无用的登录功能

版权声明:本文博主原创文章。博客,未经同意不得转载。

什么是简单的分析SQL注入漏洞的更多相关文章

  1. web安全原理分析-SQL注入漏洞全解

    简介 靶场:榆林学院信息安全协会--入侵榆大实验靶场 数字型注入 1 字符型注入 1 布尔注入 1.布尔注入简介 mysql bool注入是盲注的一种.与报错注入不同,bool注入没有任何报错信息输出 ...

  2. [SQL SERVER系列]读书笔记之SQL注入漏洞和SQL调优

    最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这个表达式永远返回 true, ...

  3. 读书笔记之SQL注入漏洞和SQL调优

    原文:读书笔记之SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“' ...

  4. SQL注入漏洞和SQL调优SQL注入漏洞和SQL调优

    SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这 ...

  5. 简单分析什么是SQL注入漏洞

    现在很多人在入侵的过程中基本都是通过SQL注入来完成的,但是有多少人知道为什么会有这样的注入漏洞呢?有的会随口说着对于字符的过滤不严造成的.但是事实是这样吗?我们学这些,不仅要知其然,更要知其所以然! ...

  6. DM企业建站系统v201710 sql注入漏洞分析 | 新版v201712依旧存在sql注入

    0x00 前言 本来呢,这套CMS都不想审的了.下载下来打开一看,各种debug注释,排版烂的不行. 贴几个页面看看 感觉像是新手练手的,没有审下去的欲望了. 但想了想,我tm就是新手啊,然后就继续看 ...

  7. Vtiger CRM 几处SQL注入漏洞分析,测试工程师可借鉴

    本文由云+社区发表 0x00 前言 干白盒审计有小半年了,大部分是业务上的代码,逻辑的复杂度和功能模块结构都比较简单,干久了收获也就一般,有机会接触一个成熟的产品(vtiger CRM)进行白盒审计, ...

  8. [代码审计]DM企业建站系统v201710 sql注入漏洞分析 | 新版v201712依旧存在sql注入

    0x00 前言 本来呢,这套CMS都不想审的了.下载下来打开一看,各种debug注释,排版烂的不行. 贴几个页面看看 感觉像是新手练手的,没有审下去的欲望了. 但想了想,我tm就是新手啊,然后就继续看 ...

  9. Joomla CMS 3.2-3.4.4 SQL注入 漏洞分析

    RickGray · 2015/10/26 11:24 昨日,Joomla CMS发布新版本3.4.5,该版本修复了一个高危的SQL注入漏洞,3.2至3.4.4版本都受到影响.攻击者通过该漏洞可以直接 ...

随机推荐

  1. Java Evaluate Reverse Polish Notation(逆波兰式)

    表情:: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) ...

  2. checkbox的attr(&quot;checked&quot;)一直以来,undefined问题解决

    最近,屌丝要项目开发的需要,需要一个完整的选checkbox特征. 该死的~~这不是很easy什么东西,共checkbox,N多个子的checkbox,总checkbox一旦选定,儿checkbox所 ...

  3. JAVA基础编程50题(10-12题)具体解释

    一.描写叙述 1.一球从m米高度自由落下.每次落地后反跳回原高度的一半:再落下,求它在 第n次落地时.共经过多少米?第10次反弹多高? 2.有1.2.3.4个数字.能组成多少个互不同样且无反复数字的三 ...

  4. 2014在百度之星资格赛的第二个问题Disk Schedule

    事实上,我认为它可以用来费用流问题.但光建地图上加班. ..不科学啊.. . 因副作用太大,否则,必然在.最后,想啊想,或者使用dp对.... 别想了一维dp... .我不知道我是怎么想.无论如何,这 ...

  5. WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现

    原文:WPF技术触屏上的应用系列(二): 嵌入百度地图.API调用及结合本地数据库在地图上进行自定义标点的实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系 ...

  6. NGUI简单背包系统的实现

    一.利用txt文件存储游戏物品信息 首先在asset下创建一个txt文件,这里我们命名为objectsInfoList.txt,并将其拖放到unity Project视图中. 其中txt中我们先存放一 ...

  7. Windows PowerShell 简介

    Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境.微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象.其可读性,易用性 ...

  8. String.format()【演示具体的例子来说明】

    String.format()[演示样例具体解释] 整理者:Vashon 前言: String.format 作为文本处理工具.为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 Strin ...

  9. 【转】Directx11 HelloWorld之HLSL的Effect框架的使用

    最近尝试用了下Directx下的Effect框架,作为一初学者初学者,说下为什么我们要使用Effect框架及其好处吧. 首先Effect最大好处的就是简单,使得编写Shader绘制的程序工作量大大下降 ...

  10. 移动开发中Fiddler的那些事儿 (转)

    当我以前在调PC端网页的时候,Firefox有Firebug,Chrom也有自己的调试抓包工具,用起来很方便. 但是现在我要在手机上面调试页面,这个时候就没有这么方便的现成工具了. 后面发现了Fidd ...