解析SQL注入测试中为什么使用/'or 1=1呢?
2008-11-04 22:54
477 查看
为什么使用的是' or 1=1--呢?
让我们来看看其他例子中使用'or 1=1--的重要性吧。有别于正常的登陆方式,使用这样的登陆方式可能得到正常登陆中不能得到的某些特殊信息。用一个链接中得到的ASP页来打比方:
在上面这条URL中,'category'是一个变量名,而'food'是赋予该变量的值。为了做到这些(链接成功),
这个ASP必须包含以下相关的代码(下面也是我们为了演示这个实验所写的代码):
v_cat = request("category) & v_cat & "' set rs=conn.execute(sqlstr)
正如我们所看到的,变量值将会预先处理然后赋值于'v_cat',也就是说该SQL语句将会变为:
SELECT * FROM product WHERE PCategory='food'
这个请求将会返回通过WHERE条件比较后得到的结果,在这个例子中也就是'food'了。现在设想一下如果
我们把该URL改成这样的话: or 1=1--
现在我们的变量v_cat的值就等同于"food' or 1=1--了,现在如果我们要重新代入那条SQL请求的话,
那条SQL请求将会是:
SELECT * FROM product WHERE PCategory='food' or 1=1--'
现在这个请求将会从product表中选取每一条信息而并不会去理会PCategory是否等于'food'。至于结尾部分的那两条'--'(破折号)则用于‘告诉’MS SQL SERVER忽略结尾最后的那个'(单引号)。有的时候也可以使用'#'(井号)来代替'--'(双破折号)在这里的用法。
无论如何,如果对方不是一台SQL服务器(这里指的是MS SQL SERVER),或者你不能使用简单的方法去忽略最后的那个单引号的话,你可以尝试:
' or 'a'='a
这样的话整个SQL请求将会变为:
SELECT * FROM product WHERE PCategory='food' or 'a'='a'
它也会返回相同的结果。
根据实际情况,SQL注入请求是可以有多种动态变化的可能性的:
' or 1=1--
"a
') or ('a'='a
让我们来看看其他例子中使用'or 1=1--的重要性吧。有别于正常的登陆方式,使用这样的登陆方式可能得到正常登陆中不能得到的某些特殊信息。用一个链接中得到的ASP页来打比方:
在上面这条URL中,'category'是一个变量名,而'food'是赋予该变量的值。为了做到这些(链接成功),
这个ASP必须包含以下相关的代码(下面也是我们为了演示这个实验所写的代码):
v_cat = request("category) & v_cat & "' set rs=conn.execute(sqlstr)
正如我们所看到的,变量值将会预先处理然后赋值于'v_cat',也就是说该SQL语句将会变为:
SELECT * FROM product WHERE PCategory='food'
这个请求将会返回通过WHERE条件比较后得到的结果,在这个例子中也就是'food'了。现在设想一下如果
我们把该URL改成这样的话: or 1=1--
现在我们的变量v_cat的值就等同于"food' or 1=1--了,现在如果我们要重新代入那条SQL请求的话,
那条SQL请求将会是:
SELECT * FROM product WHERE PCategory='food' or 1=1--'
现在这个请求将会从product表中选取每一条信息而并不会去理会PCategory是否等于'food'。至于结尾部分的那两条'--'(破折号)则用于‘告诉’MS SQL SERVER忽略结尾最后的那个'(单引号)。有的时候也可以使用'#'(井号)来代替'--'(双破折号)在这里的用法。
无论如何,如果对方不是一台SQL服务器(这里指的是MS SQL SERVER),或者你不能使用简单的方法去忽略最后的那个单引号的话,你可以尝试:
' or 'a'='a
这样的话整个SQL请求将会变为:
SELECT * FROM product WHERE PCategory='food' or 'a'='a'
它也会返回相同的结果。
根据实际情况,SQL注入请求是可以有多种动态变化的可能性的:
' or 1=1--
"a
') or ('a'='a
相关文章推荐
- 为什么使用FindFirstVolume的时候,会报“error C2065: 'FindFirstVolume' : undeclared identifier”这个错误呢?????
- VS2013 无法使用'inet_ntoa': Use inet_ntop() or InetNtop() instead or define
- Python 为什么需要使用__name__=='__main__'
- 使用XCode6打开项目以后再用XCode5出现的问题fatal error: malformed or corrupted AST file: 'Unable to load module
- Using GLib's GKeyFile Parser (使用GLib解析配置文件)
- 使用vs2012配置opencv编译出现问题:error C4996: 'fopen': This function or variable may be unsafe.
- Using GLib's GKeyFile Parser (使用Glib解析配置文件)
- 使用不同版本XCode出现的问题fatal error: malformed or corrupted AST file: 'Unable to load module
- VC编译程序时Cannot open precompiled header file: 'Debug/.pch': No such file or directory为什么
- 使用XCode6打开项目以后再用XCode5出现的问题fatal error: malformed or corrupted AST file: 'Unable to load module
- Oracle 非系统表空间'noncrit ' 无法使用系统回退段 详细解析
- sql注入问题 java中将MySQL的数据库验证秘密加上 ' or '1'= '1 就可以出现万能密码
- 浅析JSP入侵中的SQL注入之1'or'1'='1
- Unity使用FXMaker导致发布时报“The type or namespace name `UnityEditor' could not be found” 解决备忘
- 防止sql注入方法 如何防止java中将MySQL的数据库验证密码加上 ' or '1'= '1 就可以出现万能密码 的PreparedStatement
- 使用XCode6打开项目以后再用XCode5出现的问题fatal error: malformed or corrupted AST file: 'Unable to load module
- 使用XCode6打开项目以后再用XCode5出现的问题fatal error: malformed or corrupted AST file: 'Unable to load module
- Using GLib's GKeyFile Parser (使用Glib解析配置文件)
- 使用XCode6打开项目以后再用XCode5出现的问题fatal error: malformed or corrupted AST file: 'Unable to load module
- 使用py2exe 将python文件转成exe文件(以及 error: [Errno 2] No such file or directory: 'MSVCP90.dll'解决方法)