SQL注入检测
SQL注入漏洞的检测与修复

SQL注入漏洞的检测与修复数据库作为现代软件系统中重要的组成部分之一,承载着大量的数据存储和管理任务。
然而,由于编程和开发过程中的疏忽或错误,数据库系统有时会存在安全漏洞,其中最常见且危害较大的就是SQL注入漏洞。
SQL注入攻击是黑客通过在用户输入的数据中插入恶意的SQL代码,从而盗取、篡改或破坏数据库的行为。
为了维护数据库的安全性和完整性,我们需要进行SQL注入漏洞的检测与修复。
一、SQL注入漏洞的检测1. 输入验证在用户输入的数据上进行良好的输入验证是防止SQL注入漏洞的第一道防线。
开发人员应该对用户输入的数据进行过滤和验证,确保其符合预期的格式和类型。
常见的输入验证方法包括数据类型验证、长度验证、以及对特殊字符的过滤。
2. 使用预编译语句和参数化查询预编译语句和参数化查询是避免SQL注入攻击的有效手段。
通过将用户输入的参数与SQL查询语句分离,数据库引擎可以正确地对输入进行解析和处理,而不会将用户输入误认为是SQL代码。
开发人员应该尽可能使用预编译语句和参数化查询,以减少SQL注入漏洞的风险。
3. 安全审计和日志监控定期进行安全审计和日志监控是发现SQL注入漏洞的重要方法。
通过检查数据库操作日志和应用程序日志,我们可以发现异常的SQL查询语句或非法的数据库操作。
及时发现并处理这些异常行为,可以有效地保护数据库免受SQL注入攻击的威胁。
二、SQL注入漏洞的修复1. 使用参数化查询和存储过程参数化查询和存储过程可以有效防止SQL注入漏洞。
通过使用参数化查询,我们可以将用户输入的数据作为参数传递给SQL查询语句,而不是将其直接拼接到查询语句中。
存储过程则可以在数据库层面对输入进行验证和处理,确保查询的安全性。
2. 输入过滤和转义对于用户输入的数据,应该进行必要的过滤和转义处理,将特殊字符转换为其转义形式。
这样可以防止用户输入的数据被误认为SQL代码,从而有效地阻止SQL注入攻击。
3. 更新数据库软件和补丁及时更新数据库软件和安装相关补丁是防止SQL注入漏洞的重要措施。
sql注入验证方法

sql注入验证方法SQL注入验证方法什么是SQL注入SQL注入是一种常见的网络安全漏洞,攻击者通过在输入字段中插入恶意的SQL代码,从而执行非授权的数据库操作。
这可以导致泄露敏感数据、篡改数据,甚至完全控制数据库服务器。
SQL注入验证方法以下是一些常用的SQL注入验证方法,用于检测系统是否容易受到SQL注入攻击。
1. 单引号测试尝试在输入参数中插入单引号(’),观察系统对此的响应。
如果系统返回异常错误信息,则可能存在SQL注入漏洞。
2. 关键字测试尝试在输入参数中插入常见的SQL关键字,如SELECT、INSERT、UPDATE等,观察系统对此的响应。
如果系统执行了相应的数据库操作,说明存在SQL注入漏洞。
3. 嵌套查询测试尝试在输入参数中插入嵌套查询语句,如(SELECT * FROM users),观察系统对此的响应。
如果系统返回了与正常查询结果相同的数据,说明存在SQL注入漏洞。
4. UNION测试尝试在输入参数中使用UNION操作符,如' UNION SELECT username, password FROM users--,观察系统对此的响应。
如果系统返回了其他表中的数据,说明存在SQL注入漏洞。
5. 注释测试尝试在输入参数中使用注释符号(--或#),如' OR '1'='1' --,观察系统对此的响应。
如果系统返回了所有记录,说明存在SQL注入漏洞。
6. 基于错误的测试尝试在输入参数中插入错误的SQL语句,如' AND 1=2,观察系统对此的响应。
如果系统返回了错误信息,说明存在SQL注入漏洞。
防范SQL注入的方法为了防范SQL注入攻击,开发人员应采取以下措施:•使用参数化查询或预编译语句,确保用户输入的数据不会被当作代码执行。
•对用户输入进行严格的验证和过滤,去除可能包含恶意代码的字符和特殊符号。
•不要直接拼接用户输入的数据到SQL语句中,而是使用参数化的方式传递数据。
SQL注入漏洞的检测方法与修复实例

SQL注入漏洞的检测方法与修复实例随着互联网的发展,数据库安全问题变得越来越重要。
SQL注入是常见的数据库安全漏洞之一,它可以导致数据泄露、篡改或破坏,对个人隐私和商业机密造成严重威胁。
本文将介绍SQL注入的检测方法和修复实例,帮助读者更好地保护数据库安全。
一、SQL注入的概念与原理SQL注入是通过在Web应用程序中注入恶意的SQL代码,从而影响数据库的执行。
攻击者通过构造特定的输入,绕过应用程序的输入验证,将恶意代码作为有效的SQL语句执行。
这样就可以访问、修改或删除数据库中的数据,甚至获取敏感信息。
二、SQL注入的常见类型1. 基于布尔的盲注注入:攻击者通过不断猜测数据库的真假条件语句,逐渐获取数据库的信息。
2. 基于时间延迟的盲注注入:攻击者通过构造特定的SQL语句,使数据库在执行时延迟,从而间接获取信息。
3. 堆叠注入:攻击者在SQL语句中嵌入多个查询,以实现多次执行的效果,进而获取或篡改数据。
4. UNION注入:攻击者利用UNION操作符将恶意代码与正常查询结果进行合并,从而获取额外的信息。
三、SQL注入的检测方法1. 输入验证与过滤:对用户输入进行验证与过滤,确保输入的数据符合预期的格式和内容。
这包括正确使用正则表达式验证、转义特殊字符等。
2. 参数化查询:使用参数化查询方式,在SQL语句执行之前,将输入参数与查询命令分离,确保输入不被当作代码执行。
这样可以有效防止SQL注入攻击。
3. 最小化权限原则:将应用程序连接数据库的账号权限设置为最低权限,确保攻击者无法执行危险的操作。
4. 安全审计日志:记录应用程序的运行日志,包括请求参数、SQL 语句等信息,以便及时检测和追踪SQL注入攻击。
5. 使用WAF(Web应用程序防火墙):配置和使用WAF,可以对HTTP请求进行监控和过滤,防止SQL注入等攻击。
四、SQL注入的修复实例以下是一个常见的SQL注入漏洞修复实例:假设有一个用户登录功能,用户输入用户名和密码进行登录,后台的SQL查询语句如下:```sqlSELECT * FROM users WHERE username='$_POST['username']' AND password='$_POST['password']';```这个查询语句存在严重的SQL注入漏洞,攻击者可以通过构造恶意的输入,绕过登录验证。
web安全中SQL注入漏洞的检测方法

web安全中SQL注入漏洞的检测方法随着互联网技术的不断发展,Web应用程序的应用范围越来越广,同时也暴露出了越来越多的安全问题。
其中,SQL注入漏洞是Web安全中最常见、危害最大的问题之一。
因此,如何有效地检测和防范SQL注入漏洞成为了Web安全领域中极其重要的一环。
一、SQL注入漏洞的原理SQL注入漏洞是指攻击者通过Web应用程序的输入表单等交互界面,输入恶意的SQL语句,使得程序在没有进行足够验证和过滤的情况下直接将此恶意SQL 语句传递到后台数据库执行,从而获取或篡改数据库中的数据。
攻击者可以利用这种漏洞进行数据盗取、信息窃取、数据篡改等恶意行为,给 Web 系统带来极大的安全隐患。
二、常见的SQL注入漏洞检测方法1. 手动检测法手动检测法是指通过手动构造输入数据,向Web应用程序提交请求,从而检测应用程序中的SQL注入漏洞。
这种方法有一定的主观性和局限性,需要针对性地进行验证和测试,同时也需要考虑测试的覆盖率和有效性。
2. 自动化检测法自动化检测法是指利用SQL注入检测工具,对Web应用程序进行自动化的检测和测试。
这种方法可以快速、高效地检测出SQL注入漏洞,能够提高测试的覆盖率和有效性,但也存在检测误报和漏报的情况。
3. 静态检测法静态检测法是指利用源代码分析工具,对Web应用程序进行静态检测和分析,从而检测出SQL注入漏洞。
这种方法能够检测出更多潜在的漏洞,但也需要考虑源代码的可读性和可维护性,同时也需要消耗大量的计算资源和时间。
三、常见的SQL注入漏洞防范措施1. 输入数据的过滤和验证对于用户输入的数据,应立即进行过滤和验证,去除可能的恶意字符和SQL注入语句。
可以采用白名单、黑名单等方式进行过滤,从而确保输入数据的安全性和有效性。
2. 参数化查询采用参数化查询的方式,将输入的数据与SQL语句进行分离,在执行SQL语句之前对输入数据进行验证和过滤,从而防止SQL注入漏洞的攻击。
3. 设置权限和访问控制根据用户的角色和权限,设置不同的访问控制和数据库权限,限制用户访问敏感数据和操作数据库的权限,从而减小SQL注入漏洞对系统造成的影响。
sql注入测试方法

sql注入测试方法
SQL注入是一种常见的网络攻击手段,它利用Web应用程序中的安全漏洞,通过注入SQL语句来达到攻击目的。
为了保障Web应用程序的安全性,开发人员需要进行SQL注入测试。
SQL注入测试方法有以下几种:
1. 基于手工测试
手工测试是最基本的测试方法,在测试之前需要对反注入进行必要的了解。
手工测试的主要思路是通过输入恶意字符或者语句,来判断系统是否存在注入漏洞,从而进行防护修补。
2. 基于工具测试
工具测试是相对于手工测试来说更高效、更准确的一种测试方法。
工具测试可以基于现有的SQL注入测试工具来进行,例如SQLMap,
它可以自动化地检测Web应用程序是否存在注入漏洞,并且提供相应的修补方案。
3. 基于黑盒测试
黑盒测试是一种模拟攻击的测试方法。
黑盒测试可以模拟攻击者的行为,找出Web应用程序中的漏洞,从而对系统进行修补和加固。
4. 基于白盒测试
白盒测试是一种基于源代码的测试方法。
白盒测试可以通过对Web应用程序源代码的分析来找出存在的漏洞,从而进行修补和加固。
总之,SQL注入测试是非常重要的,通过合适的测试方法,可以使Web应用程序更加安全可靠。
如何防范SQL注入漏洞及检测

如何防范SQL注入漏洞及检测以下是OMG小编为大家收集整理的文章,希望对大家有所帮助。
SQL注入(SQLInjection)漏洞攻击是目前网上最流行最热门的黑客脚本攻击方法之一,那什么是SQL注入漏洞攻击呢?它是指黑客利用一些Web应用程序(如:网站、论坛、留言本、文章发布系统等)中某些存在不安全代码或SQL语句不缜密的页面,精心构造SQL语句,把非法的SQL语句指令转译到系统实际SQL语句中并执行它,以获取用户名、口令等敏感信息,从而达到控制主机服务器的攻击方法。
1. SQL注入漏洞攻击原理1. 1 SQL注入漏洞攻击实现原理SQL(Structured Query Language)是一种用来和数据库交互的语言文本。
SQL注入的攻击原理就是攻击者通过Web应用程序利用SQL 语句或字符串将非法的数据插入到服务器端数据库中,获取数据库的管理用户权限,然后将数据库管理用户权限提升至操作系统管理用户权限,控制服务器操作系统,获取重要信息及机密文件。
SQL注入漏洞攻击主要是通过借助于HDSI、NBSI和Domain等SQL注入漏洞扫描工具扫描出Web页面中存在的SQL注入漏洞,从而定位SQL注入点,通过执行非法的SQL语句或字符串达到入侵者想要的操作。
下面以一段身份验证的.NET代码为例,说明一下SQL 注入攻击的实现方法。
SqlConnectionnwConn = new SqlConnection((string)ConfigurationSettings.AppSettings["DBco nnStrings"]); string queryStr = "SELECT userid,userpwd, username,type FROM users where userid='" + Txtusername.Text +"'";DataSet userSet = new DataSet();SqlDataAdapter userAdapter = newSqlDataAdapter(queryStr, nwConn);userAdapter.Fill(userSet, "Users");Session["UserID"] =Txtusername.Text.ToString();Session["type"] =type.Text.ToString();Response.Redirect("/Myweb/admin/login.aspx");从上面的代码中可以看出,程序在与数据库建立连接得到用户数据之后,直接将username的值通过session传给login.aspx,没有进行任何的过滤和处理措施, 直接用来构造SQL 语句, 其危险系数是非常高的, 攻击者只要根据SQL 语句的编写规则就可以绕过身份验证,从而达到入侵的目的。
sql注入测试用例

sql注入测试用例SQL注入测试用例是一种常见的安全测试方法,用于检测Web应用程序是否存在SQL注入漏洞。
SQL注入是一种攻击技术,攻击者通过在Web应用程序中注入恶意SQL代码,从而获取敏感数据或者控制数据库。
因此,SQL注入测试是Web应用程序安全测试中必不可少的一部分。
下面是一些SQL注入测试用例:1. 基本的SQL注入测试用例在输入框中输入以下内容:' or 1=1--如果Web应用程序存在SQL注入漏洞,那么这个查询将返回所有的记录,因为1=1永远为真。
2. UNION注入测试用例在输入框中输入以下内容:' union select 1,2,3,4,5,6,7,8,9,10--如果Web应用程序存在SQL注入漏洞,那么这个查询将返回一个包含10列的结果集。
攻击者可以通过这种方式获取数据库中的敏感信息。
3. 盲注注入测试用例在输入框中输入以下内容:' and sleep(10)--如果Web应用程序存在SQL注入漏洞,那么这个查询将导致Web 应用程序休眠10秒钟。
攻击者可以通过这种方式测试Web应用程序是否存在SQL注入漏洞。
4. 错误注入测试用例在输入框中输入以下内容:' and 1=1 and 'a'='b如果Web应用程序存在SQL注入漏洞,那么这个查询将导致Web 应用程序返回一个错误消息。
攻击者可以通过这种方式测试Web应用程序是否存在SQL注入漏洞。
SQL注入测试是Web应用程序安全测试中必不可少的一部分。
通过使用上述SQL注入测试用例,可以有效地检测Web应用程序是否存在SQL注入漏洞,从而保护Web应用程序的安全。
sql注入校验java工具类

SQL注入校验Java工具类1. 简介SQL注入是一种常见的安全漏洞,攻击者通过在用户输入的数据中注入恶意的SQL 代码,从而篡改、删除或者获取数据库中的数据。
为了防止SQL注入攻击,开发人员需要对用户输入的数据进行校验和过滤。
在Java开发中,可以编写一个工具类来实现SQL注入的校验和过滤。
本文将介绍如何编写一个SQL注入校验Java工具类,以及如何使用该工具类来保护应用程序免受SQL注入攻击。
2. 工具类设计2.1 功能需求根据任务名称,我们需要设计一个工具类来进行SQL注入校验和过滤。
该工具类应具备以下功能:•校验输入数据是否包含SQL注入攻击的关键词。
•过滤输入数据中的特殊字符,防止SQL注入攻击。
2.2 类设计根据功能需求,我们可以设计一个名为SQLInjectionChecker的工具类来实现SQL 注入的校验和过滤。
该类包含以下方法:public class SQLInjectionChecker {/***校验输入数据是否包含SQL注入攻击的关键词。
* @param input 输入数据*@return true表示存在SQL注入攻击的关键词,false表示不存在*/public static boolean check(String input) {// 校验逻辑}/***过滤输入数据中的特殊字符,防止SQL注入攻击。
* @param input 输入数据*@return 过滤后的数据*/public static String filter(String input) {// 过滤逻辑}}3. 校验逻辑实现3.1 关键词列表SQL注入攻击的关键词通常包括SQL的敏感操作和特殊字符。
我们可以定义一个关键词列表来存储这些关键词,例如:private static final String[] KEYWORDS = {"select", "insert", "update", "delete", "drop", "truncate", "alter"};3.2 校验方法实现在check方法中,我们可以使用正则表达式来匹配输入数据中是否包含关键词。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
写在前面:现在的网络,脚本入侵十分的流行,而脚本注入漏洞更是风靡黑客界。
不管是老鸟还是新起步的小菜,都会为它那巨大的威力和灵活多变的招式所着迷。
正是因为注入攻击的流行,使的市面上的注入工具层出不穷。
比较出名的有小竹的NBSI、教主的HDSI和啊D的注入工具等等。
这大大方便的小菜们掌握注入漏洞。
可是,工具是死的,注入的手法却是活的,能否根据实际情况灵活地构造SQL注入语句,得到自己想要的信息,是高手与小菜的根本区别。
只用工具,而不去管它的原理,是不可能得到提高的,当然,在遇到一些特殊情况的时候,那些只会用工具的小菜们也只能放弃了。
所以学会手工注入自己构造SQL注入语句是一个黑客爱好者必上的一堂课。
恶补基础:要想学会手工注入,有一个名词是不得不提的,那就是数据库系统。
1。
简介数据库系统分为数据库和数据库管理系统!数据库是存放数据的地方,数据库管理系统则是管理数据库的软件!数据库中数据的存储节构叫数据模型!有四种常见的数据模型,分别是层次模型、网状模型、关系模型和面向对象模型。
其中关系数据模型是最主要的数据模型,ACCESS、MSSQL、ORACLE等都是关系模型数据库系统。
其中以ACCESS、MSSQL数据库系统最为常见!这些都是理论的知识,希望大家理解。
2。
基本概念表:表是一个关系数据库的基本组成元素!它按行与列组合排列成相关信息。
通常行称为记录,列称为域。
每个域称为一个字段!每一条记录都由多个字段组成。
每个字段的名字叫做字段名,每个字段的值叫估字段值。
表中的每一行即每一条记录都拥有想同的结构。
如图1。
图1中的这张表里有14行,即14条记录。
有4列,即4个字段,4个字段的名字分别叫:job_id(下面对应的1、2、3等都是这个字段的值,后面三个字段的值举一反三!) 、job_ desc、 min_lvl、max_lvl。
因为本文不是专讲数据库知识的,所以这里只讲一些最重要的概念,有兴趣的朋友可以自己去查看数据库的有关资料!3。
注入的条件只有调用数据库的动态页面才有可有存在注入漏洞,动态页面包括asp php jsp cgi 等。
本文只讲对ASP页面的注入。
那什么是调用数据库的页面呢?比如这样的形势:asp?id= php?id= 这样的样子的都是调用数据库的页面。
"?"后面加的id的名字叫变量,注意这个变量是可以随便换的,"="号后面的值名字叫参数!这个参数也是可以变的!大家的思路一定要灵活,要学会举一反三,不要太死板。
4。
注入漏洞的原理分析:程序对用户提交的变量没有进行有效的过滤,就直接带入查询语句中,这样,我们就可以提交具有数据查询功能的语句,加入到程序将要提交的信息中去,再根据服务器返回的信息来判断数据库里的内容!光这样说大家可能不太好理解,不要紧,接着往下看。
有关的基础已经讲完了下面开始实战练习部分。
实战部分如果是刚刚接触注入的新手朋友,我们要做的第一步就是,用鼠标右键点击桌面上的IE图标,再点属性,然后再点“高级”,然后往下拉滚动条,找到“显示友好HTTP错误信息”,把前面的勾去掉,再点“确定”,这样做是为了让我们得到更多的服务器返回的信息。
第一部分:ACCESS数据库手工注入1。
判断是否存在注入漏洞:这个相信大家都应该知道! 就是在一个调用数据库的网址后面加上分别加上 and 1=1和 and 1=2 ,如果加入and 1=1返回正常(就是和原来没有加 and 1=1时页面样子的一样),而加入 and 1=2返回错误(和原来没有加 and 1=2时页面的样子不一样),就可以证明这个页面存在注入漏洞。
比如:/a.asp?id=7,这个网页,我们在后面加上 and 1=1(两个空格,and 前面一个,and和1=1之间一个!),网址就变成了/a.asp?id=7 and 1=1,用IE打开这个网页,返回正常!再尝试在后面加上and 1=2,网址就变成了/a.asp?id=7 and 1=2,同样用IE打开这个网页,返回错误!这就说明这个网页/a.asp?id=7存在注入漏洞,是一个注入点!(存在注入漏洞的网页叫注入点!)可是,并不是所有的页面都可以这样判断,有的页面不管你加入 and 1=1 还是 and 1=2,返回的都是错误的页面,难道这样的页面就没有注入漏洞吗?不一定!比如这个页面:/b.asp?id=ade7, 不管我们在后面上的是and 1=1还是and 1=2,它都返回错误的页面!这个时候我们就要尝试用另一种方法来测试漏洞了,这种方法可以说是and 1=1和and 1=2的变种方法。
原来的网址是这样的:/b.asp?id=ade7,现在我们把它变成这个样子:[url]/b.asp?id=ade7'[/url] and '1'='1 ,用IE打开它,看看返回正不正常!如果正常,那就可以接着用这个地址来进一步测试漏洞是否存在(如果返回不正常那这个页面就很有可能不存在注入漏洞!):[url]/b.asp?id=ade7'[/url] and '1'='2 ,用IE打开这个网址,如果返回错误的话,那这个网址/b.asp?id=1就存在注入漏洞!A。
数字型参数注入点分析这时肯定有朋友要问了,为什么用一开始那种and 1=1 and 1=2不行呢!呵呵,先不要急,先看看这两个存在注入漏洞的页面有什么不一样?(你不要告诉偶第二个网址比第一个网址多了几个X),相信大家已经看到了,第二个网址后跟的参数是ade7,是字符!而第一个网址后跟的参数是7,是数字!就是因为这里,才引起了测试漏洞的语句的不同!学过数据库的朋友们应该知道,在查询中,字符型的值,是要用单引号包起来的,也就是这个样子'字符型数据'。
这里假设第一个注入页面所对应的查询语句是这样的(凡是调用数据库的页面都会有一条或者几条对应的查询语句,用来对数据库里的内容进行查询!):select * from 表名 where id=7。
这是原来的那条查询语句,这条语句是正确的,可以在数据库中查询出相应的内容!可是如果我们在网址后面加上了 and 1=1,那这条查询语句就会变成select * from 表名 where id=7 and 1=1(这下知道了注入漏洞原理分析那里讲的变量没有过滤的意思了吧!),这里有必要说一些数据库的有关知识,这条语句里,and 是逻辑运算符!(这个记住就行了),用中文翻译过来就是“和”的意思!在高中的数学里讲过,用“和”来连接的两个句子,必须都是真的,不然整个句子就不是真的!比如:苹果和大象都是水果。
这句话就是错的,苹果是水果,可是大象不是!这下大家应该可以理解“用“和”来连接的两个句子,必须都是真的,不然整个句子就不是真的”这句话了吧。
如果换成苹果和梨都是水果,那这句话就是对的。
知道了and的用处后,再回来看select * from 表名where id=7 and 1=1这个句子,and 前面的select * from 表名 where id=7肯定是对的,(为什么呢,如果这条查询语句都不对,那这个注入页而就有问题了!所以and前面的那个句子一定是对的!)。
再看and后面,1=1,不用我说了吧,也是对的(难道一不等于一吗?)根据刚才说的and用处,现在我们可以判定select * from 表名 where id=7 and 1=1这条查询语句,仍然是对的!所以它还是可以正确地从数据库里查询出信息,返回给我们!举一反三,那这个句子:select * from 表名 where id=7 and 1=2,肯定是不对的了,那这条查询语句就不能正确地从数据库里查询出信息,所以我们就会看到一个错误的页面! 以上是注入点参数是int(整数型)时的分析。
B。
字符型参数注入点分析和刚才一样,我们先来看第二个字符型注入页面里的查询语句,比如是这个select * from 表 where id='ade7'(为什么加引号?看前面吧!)。
原来的查询语句是这个样子的,如果我们还按照数字型参数的那种测试漏洞的方法的话,语句就会变成这样:select * from 表where id='ade7 and 1=1'和select * from 表 where id='ade7 and 1=2' ,因为程序会自动查询引号里的内容,如果我们按前面这两个语句这样提交的话,程序就会查询id值为ade7 and 1=1和ade7 and 1=2的记录,这样是查不到结果的(你可不要告诉我数据库里正好有两个记录的id就是ade7 and 1=1 和and 1=2)。
这里可能有朋友要问了,为什么不是查询id为'ade7,然后and 1='1呢?好,我现在回答你们,就算可以查询id值为'ade7的记录,那这个句子也是错的,1怎么会等于'1呢?对吧?更何况程序是不可能查询'ade7的,更准备的说是数据库中不可能有一个字段的值是'ade7,因为这个字符串少一个引号,如果直接把这个字符串存入数据库的话,程序会报错的!怎么样?明白了吧?现在再说用 ' and '1'='1和' and '1'='2来测试的的原理!同样是这个查询语句:select * from 表 where id='ade7',如果我们在网址后面加了' and '1'='1,那这个查询语句就会变成select * from 表 where id='ade7' and '1'='1'(这里最外面的那一层引号是程序自动加上的),变成这个样子!这个语句对不对呢?我们分析一下。
如果我们提交个语句,那程序就会自动查询id值是ade7的记录!因为这个记录是存在的(不存在的话那就是这个网页有问题了!),然and后面跟的'1'='1'是正确的,所以这个语句是正确的!如果我们把' and '1'='1换成' and '1'='2,那语句就成了select * from 表 where id='ade7' and '1'='2',只看后面我们就可以知道这个语句对不对了!'1'怎么可能等于'2'呢?是吧?好了,字符型参数的注入点的原理就介绍到这里!2。