SQL注入全过程

合集下载

kali sql注入实例

kali sql注入实例

Kali Linux 是一款非常强大的渗透测试和安全审计工具,其中包含了大量的工具和技术,用于检测和利用各种安全漏洞。

在渗透测试中,SQL注入是一种常见的攻击方式,它允许攻击者执行任意SQL命令,从而窃取、修改或删除数据。

以下是一个简单的Kali Linux SQL注入实例:目标:对一个简单的登录页面进行SQL注入攻击。

步骤1:确定目标首先,我们需要确定目标网站,并找到可以注入的输入字段。

在本例中,我们将攻击一个登录页面,该页面包含用户名和密码输入框。

步骤2:识别注入点在浏览器中输入目标URL,并观察页面上的输入框。

如果输入框后面直接跟着查询参数(例如“user=”和“password=”),那么这些参数很可能就是注入点。

步骤3:利用SQL注入漏洞接下来,我们需要构造一个恶意的输入字符串来执行SQL命令。

在本例中,我们将使用一个简单的SQL注入语句来绕过登录验证。

在用户名输入框中输入以下内容:admin'-- -在密码输入框中输入以下内容:password然后点击“登录”按钮。

如果攻击成功,我们将绕过密码验证并登录到系统。

步骤4:利用获取的数据一旦成功登录系统,我们就可以利用SQL注入漏洞来获取敏感数据或执行其他恶意操作。

在本例中,我们将使用SQL查询语句来获取所有用户的密码。

在用户名输入框中输入以下内容:admin'; SELECT * FROM users; ---然后点击“登录”按钮。

如果攻击成功,我们将获取到所有用户的密码。

注意:这只是一个简单的示例,实际的SQL注入攻击可能更加复杂和危险。

在渗透测试或安全审计中,应该谨慎行事,并遵守相关法律法规和道德准则。

sql注入步骤

sql注入步骤

sql注入步骤
SQL注入是一种常见的网络攻击方式,攻击者通过在输入框中输入特殊字符,从而欺骗系统执行恶意的SQL语句。

以下是SQL注入的步骤:
1. 收集目标网站的信息:攻击者需要了解目标网站的数据库类型、表结构、字段名称等信息,这些信息可以通过网络爬虫、端口扫描、SQLmap等工具获取。

2. 找到注入点:攻击者需要在目标网站的输入框中寻找可注入的点,通常是通过输入一些特殊字符来观察网站的响应,如果响应异常则说明存在注入点。

3. 构造注入语句:攻击者需要构造恶意的SQL语句,以获取或篡改数据库中的数据。

常见的注入语句包括SELECT、UPDATE、DELETE、INSERT等操作。

4. 执行注入语句:攻击者将构造好的注入语句插入到输入框中,并提交给目标网站。

如果注入成功,攻击者就能够获取或篡改数据库中的数据。

5. 掩盖攻击痕迹:攻击者需要在攻击后清除攻击痕迹,以避免被发现。

常见的掩盖方式包括删除日志、修改数据库记录等操作。

总之,SQL注入是一种非常危险的攻击方式,可以导致数据库中的数据被盗取或篡改,给企业和个人带来极大的损失。

因此,网站开发者需要加强对输入框的
过滤和验证,以防止SQL注入攻击。

sql注入的流程

sql注入的流程

SQL注入的流程和步骤SQL注入是一种常见的网络攻击方式,攻击者通过在应用程序中注入恶意的SQL语句来获取或修改数据库中的数据。

为了更好地理解SQL注入的流程和步骤,本文将从以下几个方面进行详细描述:1.SQL注入的基本原理2.攻击者利用SQL注入的步骤3.防御SQL注入的措施1. SQL注入的基本原理在了解SQL注入的流程之前,我们首先需要了解SQL注入攻击是如何利用应用程序对用户输入进行不当处理而实现的。

通常情况下,应用程序会将用户输入直接拼接到SQL查询语句中,而没有对用户输入进行充分验证和过滤。

这样一来,如果攻击者能够构造恶意输入,并成功地将其插入到SQL查询语句中,就可以执行任意的SQL操作。

例如,考虑以下代码片段:username = request.getParameter("username")password = request.getParameter("password")sql = "SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'"上述代码片段是一个简单的登录验证功能,通过接收用户输入的用户名和密码,并将其拼接到一个查询语句中。

然而,如果攻击者在用户名或密码字段中输入特殊字符,如单引号(’),就可以改变查询语句的结构,从而绕过登录验证。

2. 攻击者利用SQL注入的步骤攻击者利用SQL注入攻击的一般步骤如下:步骤1:收集信息攻击者首先需要收集关于目标应用程序和数据库的信息,包括但不限于: - 网站或应用程序的URL - 数据库类型和版本 - 输入字段的名称和类型 - 页面上显示的错误信息这些信息可以通过查看网页源代码、抓包工具、搜索引擎等方式获取。

sql注入的基本思路和步骤

sql注入的基本思路和步骤

SQL注入是一种常见的网络攻击方式,攻击者通过在输入字段中输入特定的SQL代码,从而在执行查询时对数据库进行非法的操作。

以下是一个SQL注入的基本思路和步骤:
基本思路:
攻击者尝试在应用程序的输入字段中输入恶意的SQL代码。

应用程序将这些恶意代码作为参数传递给SQL查询。

数据库服务器执行这个包含恶意代码的查询,导致数据泄露、数据篡改或其他未授权的操作。

步骤:
识别可能的注入点:这通常涉及到检查应用程序中所有的输入字段,如搜索框、登录表单、评论框等。

确定注入类型:确定注入是数字型还是字符型。

数字型注入主要针对数据库中的数值字段,而字符型注入可以针对字符串字段。

猜解表结构:通过注入获取数据库中表的信息,例如使用特定的SQL注入语句来获取数据库的版本、系统架构等。

提取数据:利用获取的信息,尝试提取数据库中的敏感数据,如用户信息、密码等。

利用数据库权限:如果攻击者能够利用注入获取到足够的权限,他们可能会对数据库进行更严重的操作,如删除数据、修改数据或执行任意的SQL命令。

绕过安全措施:例如,绕过应用程序的验证机制或Web应用防
火墙(WAF)。

预防措施:
使用参数化查询或预编译的语句来避免SQL注入。

对用户输入进行验证和清理,去除可能的恶意代码。

使用最小权限原则,即应用程序连接数据库的账号只应具有执行必要操作的最小权限。

使用Web应用防火墙(WAF)来检测和阻止SQL注入攻击。

定期审查和更新应用程序的安全策略和代码。

SQL注入详细讲解概括-GET注入、POST注入、HEAD注入

SQL注入详细讲解概括-GET注入、POST注入、HEAD注入

SQL注⼊详细讲解概括-GET注⼊、POST注⼊、HEAD注⼊SQL注⼊详细讲解概括-GET注⼊、POST注⼊、HEAD注⼊1、SQL注⼊流程2、GET注⼊3、POST注⼊4、HEAD注⼊⼀、SQL注⼊流程 1、SQL注⼊流程 · 寻找注⼊点—与数据库交互的地⽅,⽐如登录框,搜索框、URL地址栏、登陆界⾯、留⾔板等等 · 判断是否存在注⼊点,判断数据库类型,确定注⼊⽅法 · 构造特殊语句,查询数据库数据⼆、GET注⼊ 1、What is GET注⼊ 要搞懂GET注⼊之前,先搞懂什么是GET传参。

GET传参:⽤户输⼊的内容参数会被传到地址栏(URL栏),是通过GET的⽅式进⾏传参 · 特点:传参内容可见,传参长度有限,标识“?”,输⼊的内容会可能被url编码 GET注⼊:通过GET传参的⽅式,传输恶意语句,进⾏SQL注⼊ 2、如何进⾏GET注⼊ ⼀般情况判断为传参⽅式为GET传参⽅式,⾸先进⾏GET注⼊测试,判断是否存在GET注⼊ 如何判断是否存在GET注⼊:要想知道是否存在,⾸先搞原理,弄清楚是如何发⽣的 简单说,原本程序要执⾏的代码拼接了⽤户输⼊的数据然后执⾏,就是本来⽤户输⼊的数据是要被查询的,但是被数据库当作代码执⾏ OK,AND,只需知道输⼊的数据有没有被数据库当作代码,可以判断存不存在注⼊点 AND,⽤户输⼊的数据⼀定不是输⼊everying都⾏的,如果⽤户随便输⼊的数据都被当做代码执⾏,那么这个⽹站就失去了它的功能,这是⽹站开发者不允许的 SO,要输⼊什么数据才能被判断是否存在注⼊点呢 先来看⼀段代码 $query = "SELECT first_name, last_name FROM users WHERE user_id = $id⽤户输⼊参数传⼊$id来输⼊1 >>>> $id=1 >>> sql语句就变成了下⾯这样$query = "SELECT first_name, last_name FROM users WHERE user_id = 1ok,look look 现在数据库收到的数据是这样的,,SELECT first_name, last_name FROM users WHERE user_id = 1AND,输⼊什么能够让数据库执⾏⼀些别的操作思考ing time(3min)当然是数据库语⾔了,,,试⼀试 or 怎么样ok,, >>> 1 or 1=1 >>> $id=1 or 1=1SELECT first_name, last_name FROM users WHERE user_id = 1 or 1=1输⼊的内容当作代码执⾏了 //这个叫做整形闭合 在来看⼀段,这次把变量⽤引号引起来,⽤单引号or⽤双引号,是不⼀样的破解⽅法$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"上⾯双引号⾥的是要被传⼊数据库执⾏的first,输⼊的数据被传⼊$id这个变量ok,那么输⼊⼀个 1 ,$id=1 and 此语句就变成了:SELECT first_name, last_name FROM users WHERE user_id = '1'那么要怎么做才能变成输⼊的数据变成代码执⾏呢?思考ing time(5min)ok,⽆论输⼊什么数据他都在引号⾥,那输⼊的数据就没有任何意义对吧,那就来突破引号,如何突破,,look here 》》 1' or 1=1 ' 》》 $id=1' or 1=1 ' 拼接试⼀试SELECT first_name, last_name FROM users WHERE user_id = '1' or 1=1 ''FUCK,,有问题了,,不⼀样了 //这个叫做单引号闭合那么再来思考⼀个问题,当变量⽤双引号引起来怎么办,不是没⽤引号,也不是单引号思考ing time(2min)ok,easy 那就⽤双引号破解呗SELECT first_name, last_name FROM users WHERE user_id = "$id"look here 》》》 1" or 1=1 " 》》》 $id=1" or 1=1 "SELECT first_name, last_name FROM users WHERE user_id = "1" or 1=1 ""success,easy //这个叫做双引号闭合 OK,上⾯是能看到后端代码的,哪个⽹站愿意让你看到他的后端代码,It won't AND,看不到源码,怎么进⾏注⼊呢 so easy , 通过传⼊的恶意代码,观察页⾯情况,是否正常等,来判断是否存在注⼊点,确定注⼊⽅法 ⾸先我们找到传参点,进⾏注⼊尝试,⾸先判断闭合类型 SQL语句的闭合类型:整型闭合、单引号闭合、双引号闭合、单引号加括号、双引号加括号 · 整形闭合 1SELECT* FROM admin WHERE id=1; //整形闭合 模拟注⼊ ?id=1' => 报错 ?id=1'' => 报错 判断为整形闭合 · 单引号闭合 1SELECT* FROM admin WHERE id=‘1’; //单引号闭合 模拟注⼊ ?id=1' => 报错 ?id=1'' => 正常返回id=1的值 判断为单引号或者单引号括号闭合 任何闭合⽅式都这样在没有遇到相对应的闭合时,都会把这个符号当作⼀个整体,注释符也不例外 再次模拟注⼊ ?id=1'-+ => ⽆报错 => 单引号闭合 ?id=1'-+ => 报错 => 单引号括号闭合 · 双引号闭合 1SELECT* FROM admin WHERE id="1"; //双引号闭合 ?id=1' => 正常返回id=1的值 ?id=1" => 报错 判断为双引号闭合或者双引号括号闭合 再次模拟注⼊ ?id=1"-+ => ⽆报错 => 双引号闭合 ?id=1"-+ => 报错 => 双引号括号闭合 · 总结 判断闭合类型 ⾸先尝试:?id=1' ?id=1" 不报错 => 整形闭合 报错 => 单引号报错,双引号不报错 => 尝试 ?id=1'-+ => ⽆报错单引号闭合,报错单引号加括号闭合 报错 => 单引号不报错,双引号报错 => 尝试 ?id=1"-+ => ⽆报错双引号闭合,报错双引号加括号闭合 注⼊点找到,确定闭合⽅式开始进⾏注⼊攻击,以DVWA靶场为例 First,观察url栏判断为GET传参,先进⾏正常内容输⼊,输⼊1 ,看返回结果 第⼆步,测试是否存在注⼊,进⾏恶意语句测试,不知道闭合类型,先从整形闭合开始判断 1 and 1=1 页⾯正常,与id=1 时返回的内容⼀样不确定是否注⼊成功,因为and 1=1 恒成⽴所以还得进⾏第⼆次判断,1 and 1=2 页⾯正常,与id=1 时返回的内容⼀样,and 1=2 是恒不成⽴的,如果数据库执⾏了代码那么应该是没有数据返回的,现在返回了数据,so,不是整形闭合 ok,既然不是整形闭合,那么去尝试是不是单引号闭合,输⼊ 1',,,把错误显⽰出来了,说明是单引号闭合,既存在注⼊,⼜确定是单引号闭合,那么可以进⾏注⼊了。

sql注入攻击的基本过程

sql注入攻击的基本过程

sql注入攻击的基本过程
SQL注入攻击是一种常见的网络攻击方式,攻击者通过在应用程
序中注入恶意SQL代码,从而获取敏感信息或者破坏数据库。

下面是SQL注入攻击的基本过程:
1. 收集目标信息
攻击者首先需要了解目标网站的结构和使用的数据库类型,以便
更好地准备攻击。

攻击者可以通过网络扫描工具、搜索引擎等方式来
获取这些信息。

2. 构造恶意SQL语句
攻击者在了解了目标网站的结构和数据库类型后,就可以开始构
造恶意SQL语句。

攻击者通常会在输入框等用户输入的地方注入SQL
代码,以达到获取敏感信息或者破坏数据库的目的。

3. 执行恶意SQL语句
一旦恶意SQL语句被注入到应用程序中,攻击者就可以执行这些
语句。

如果攻击成功,攻击者就可以获取敏感信息或者破坏数据库。

4. 控制应用程序
如果攻击者成功执行了恶意SQL语句,他们就可以控制应用程序,例如更改用户权限、删除数据等。

5. 隐藏攻击痕迹
攻击者通常会尽可能地隐藏攻击痕迹,以避免被发现。

他们可能
会删除或篡改日志文件,或者在攻击后将恶意SQL语句删除。

为了防止SQL注入攻击,应用程序开发人员需要采取一系列措施,例如使用参数化查询、过滤用户输入、限制数据库用户权限等。

同时,应用程序管理员需要定期检查应用程序和数据库的安全性,及时修补
漏洞。

sql注入的步骤

sql注入的步骤SQL注入是一种常见的Web应用程序漏洞,攻击者通过在应用程序的输入参数中注入恶意的SQL代码来实现对数据库的非授权访问。

以下是SQL注入的一般步骤:1.了解目标:攻击者首先需要弄清楚目标系统使用的数据库类型和版本,以及应用程序中存在的可能的注入点。

2.收集信息:攻击者使用信息收集技术来获取有关目标系统的详细信息,例如应用程序的URL结构、参数、表名、列名等。

3. 扫描注入点:攻击者使用自动化工具或手动扫描目标系统,以发现可能存在的注入点。

常见的注入点包括URL参数、表单输入、Cookie等。

4.确认注入点:攻击者通过注入特定的SQL语句来确认注入点的存在。

常见的方法是在用户输入中添加单引号(')或双引号(")并观察是否出现错误信息。

5.破解注入点:一旦确认存在注入点,攻击者开始利用该漏洞。

他们尝试通过修改原始SQL语句的结构和语义来构造恶意的SQL查询。

攻击者可以使用注释符号(--)来注释掉原始SQL查询的一部分,然后添加自己的SQL代码。

6.提取数据:一旦成功注入恶意的SQL查询,攻击者可以执行各种操作,例如提取数据库中的敏感信息,修改数据库内容或删除数据。

7.升级权限:如果攻击者在注入点处获得的权限不足以执行所需的操作,他们可能会尝试提升其权限,以便获得更多的权限,如管理员权限。

8.掩盖攻击痕迹:为了掩盖攻击痕迹,攻击者可能会删除或修改数据库中的日志文件、日志记录或备份文件。

9.持久性注入:一旦攻击成功,攻击者可能会尝试在应用程序中创建持久性注入点。

他们可以修改应用程序的代码或数据库结构,以便在以后访问或控制目标系统。

10.清理痕迹:为了摆脱攻击的追踪,攻击者会清理和覆盖其在目标系统上留下的所有痕迹。

总结起来,SQL注入的步骤包括了解目标、收集信息、扫描注入点、确认注入点、破解注入点、提取数据、升级权限、掩盖攻击痕迹、持久性注入和清理痕迹。

为了防止SQL注入攻击,开发人员应该采取适当的防御措施,如使用参数化查询、输入验证和安全编码实践。

sql注入的步骤

sql注入的步骤SQL注入是一种利用应用程序中的安全漏洞,向数据库传递恶意SQL语句的攻击方式。

攻击者通过注入恶意代码,可以绕过应用程序的认证和授权机制,对数据库进行未授权的操作,甚至可能获取到敏感数据。

以下是SQL注入的步骤详解:1.了解目标:攻击者首先需要了解目标应用程序使用的数据库类型和版本,这有助于他们选择合适的注入技巧和策略。

2.识别注入点:攻击者需要找到应用程序中可以接受用户输入,并将其传递给数据库的地方。

常见的注入点包括用户登录窗口、表单、URL参数等。

3.构建恶意输入:攻击者构造恶意的输入数据,以注入恶意的SQL代码。

他们可以使用单引号、分号、注释符等字符来绕过输入验证。

4.检测注入点类型:攻击者需要确定注入点是基于布尔类型的还是基于错误消息的。

布尔注入点是通过观察应用程序的反应来判断查询结果是否为真或假。

错误消息注入点是通过观察应用程序返回的错误消息来判断注入是否成功。

5.执行注入语句:攻击者将构建的恶意输入传递给注入点,使之成为最终执行的SQL语句的一部分。

攻击者可以通过注入语句来执行各种操作,如数据库信息获取、数据篡改、管理员权限提升等。

6.探测数据库结构:攻击者可以使用一些特定的SQL语句来探测数据库的结构,如UNIONSELECT语句、ORDERBY语句等。

他们可以通过这些语句来确定数据库中的表名、列名和其他相关信息。

7.猜测和遍历数据:一旦攻击者了解了数据库结构,他们可以使用猜测和遍历的方法来获取更多的数据。

他们可以猜测表名、列名等,并通过遍历查询数据。

8.利用结果:攻击者可以利用所获取的数据来达到自己的目的,如盗取用户账号密码、篡改数据、获取敏感信息等。

9.遮蔽攻击行为:攻击者可能会删除或修改数据库日志、清理恶意痕迹,以避免被发现。

为了防止SQL注入攻击,开发者应该采取以下安全措施:-输入验证和过滤:开发者需要对用户输入进行验证和过滤,确保输入数据安全。

可以使用白名单或黑名单技术,禁止或限制特定字符的使用。

sql注入的主要流程

sql注入的主要流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 寻找注入点:攻击者首先需要寻找目标网站或应用程序中可能存在 SQL 注入漏洞的地方。

何小伟—实况转播SQL注入全过程

何小伟-实况转播 SQL 注入全过程,让你知道危害有多大。

前阵子发现公司的网站有 SQL 注入漏洞,向项目经理提了以后,得到的答复异 常的冷淡:“早就知道,这种 asp 的网站肯定有漏洞,要是 的网站就没问 题”,先暂不评价此说法对错,如此冷淡的反应只能说明了对 SQL 注入的无知,今 天就实况转播,来告诉大家 SQL 注入究竟有多大的危害。

初步注入--绕过验证,直接登录公司网站登陆框如下:可以看到除了账号密码之外,还有一个公司名的输入框,根据输入框的形式不 难推出 SQL 的写法如下:SELECT * From Table WHERE Name='XX' and Password='YY' and Corp='ZZ'我发现前两者都做一些检查,而第三个输入框却疏忽了,漏洞就在这里!注入 开始,在输入框中输入以下内容:用户名乱填,密码留空,这种情况下点击登录按钮后竟然成功登录了。

我们看 一下最终的 SQL 就会找到原因:SELECT * From Table WHERE Name='SQL inject' and Password='' and Corp='' or 1=1--'从代码可以看出,前一半单引号被闭合,后一半单引号被 “--”给注释掉,中 间多了一个永远成立的条件“1=1”,这就造成任何字符都能成功登录的结果。

而 Sql 注入的危害却不仅仅是匿名登录。

中级注入--借助异常获取信息。

现在我们在第三个输入框中写入:“‘ or 1=(SELECT @@version) –”。

如下:后台的 SQL 变成了这样:SELECT * From Table WHERE Name='SQL inject' and Password='' and Corp='' or 1=(SELECT @@VERSION)--'判断条件变成了 1=(SELECT @@VERSION),这个写法肯定会导致错误,但出错正 是我们想要的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL注入全过程,含实例初步注入--绕过验证,直接登录公司网站登陆框如下:可以看到除了账号密码之外
SQL注入全过程,含实例
初步注入--绕过验证,直接登录
公司网站登陆框如下:
可以看到除了账号密码之外,还有一个公司名的输入框,根据输入框的形式不难推出SQL的写法如下:
SELECT * From Table WHERE Name='XX' and Password='YY' and Corp='ZZ'
我发现前两者都做一些检查,而第三个输入框却疏忽了,漏洞就在这里!注入开始,在输入框中输入以下内容:
用户名乱填,密码留空,这种情况下点击登录按钮后竟然成功登录了。

我们看一下最终的SQL就会找到原因:
SELECT * From Table WHERE Name='SQL inject' and Password='' and Corp='' or 1=1--'
从代码可以看出,前一半单引号被闭合,后一半单引号被“--”给注释掉,中间多了一个永远成立的条件“1=1”,这就造成任何字符都能成功登录的结果。

而Sql注入的危害却不仅仅是匿名登录。

中级注入--借助异常获取信息。

现在我们在第三个输入框中写入:“‘ or 1=(SELECT @@version) –”。

如下:
后台的SQL变成了这样:
SELECT * From Table WHERE Name='SQL inject' and Password='' and Corp='' or 1=(SELECT @@VERSION)--'
判断条件变成了 1=(SELECT @@VERSION),这个写法肯定会导致错误,但出错正是我们想要的。

点击登录后,页面出现以下信息:
Conversion failed when converting the nvarchar value 'Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64) Sep 21 2011 22:45:45 Copyright (c) 1988-2008 Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) ' to data type int.
可怕的事情出现了,服务器的操作系统和SQL Server版本信息竟然通过错误显示出来。

危害扩大--获取服务器所有的库名、表名、字段名
接着,我们在输入框中输入如下信息:“t' or 1=(SELECT top 1 name FROM master..sysdatabases where name not in (SELECT top 0 name FROM master..sysdatabases))--”,此时发现第三个输入框有字数长度的限制,然而这种客户端的限制形同虚设,直接通过Google浏览器就能去除。

点击登录,返回的信息如下:
Conversion failed when converting the nvarchar value 'master' to data type int.
数据库名称“master”通过异常被显示出来!依次改变上面SQL语句中的序号,就能得到服务器上所有数据库的名称。

接着,输入信息如下:“b' or 1=(SELECT top 1 name FROM
master..sysobjects where xtype='U' and name not in (SELECT top 1 name FROM master..sysobjects where xtype='U'))--”
得到返回信息如下:
Conversion failed when converting the nvarchar value
'spt_fallback_db' to data type int.
我们得到了master数据库中的第一张表名:“spt_fallback_db”,同上,依次改变序号,可得到该库全部表名。

现在我们以“spt_fallback_db”表为例,尝试获取该表中所有的字段名。

在输入框中输入以下代码:“b' or 1=(SELECT top 1 FROM master..syscolumns, master..sysobjects WHERE
master..syscolumns.id=master..sysobjects.id AND
='spt_fallback_db');”
于是,得到错误提示如下:
"Conversion failed when converting the nvarchar value 'xserver_name' to data type int.";
这样第一个字段名“xserver_name”就出来了,依次改变序号,就能遍历出所有的字段名。

最终目的--获取数据库中的数据
写到这里,我们已知通过SQL注入能获取全部的数据库,表,及其字段,为了防止本文完全沦为注入教程,获取数据的代码就不再描述,而这篇文章的目的也已达到,SQL注入意味着什么?意味着数据库中所有数据都能被盗取。

当知道这个危害以后,是否还能有人对SQL注入漏洞置之不理?
结语
关于安全性,本文可总结出一下几点:
1.对用户输入的内容要时刻保持警惕。

2.只有客户端的验证等于没有验证。

3.永远不要把服务器错误信息暴露给用户。

除此之外,我还要补充几点:
1.SQL注入不仅能通过输入框,还能通过Url达到目的。

2.除了服务器错误页面,还有其他办法获取到数据库信息。

3.可通过软件模拟注入行为,这种方式盗取信息的速度要比你想象中快的多。

4.漏洞跟语言平台无关,并非asp才有注入漏洞而就没有注入漏洞,一切要看
设计者是否用心。

相关文档
最新文档