注入中的数字型,字符型,搜索型的区别
来源:互联网 发布:豆瓣知乎的运营方式 编辑:程序博客网 时间:2024/06/15 03:32
作者:幻泉
blog:http://hi.baidu.com/woshihuanquan/
在数据库注入中经常有人说这个注入点为字符型的,那个注入点位数字型的,那么到底什么是数字型什么是字符型呢?其实所有的类型都是根据数据库本身表的类型所产生的,在我们创建表的时候会发现其后总有个数据类型的限制,而不同的数据库又有不同的数据类型。例如mssql就有很多自己的数据类型,但是无论怎么分常用的查询数据类型总是以数字与字符来区分的,所以就会产生注入点为何种类型。
而在SQL查询语句中,数据类型的语法有三种,也就是我们上面所说的数字型,字符型,搜索型。语法如下:
数字型: SELECT 列 FROM 表 WHERE 数字型列=值
字符型: SELECT 列 FROM 表 WHERE 字符型列=’值’
搜索型: SELECT * FROM 表 WHERE where 被搜索的列 like ‘%值%’
从语法中大家就可以看到其实类型之间的不同是很微小的,虽然有这微小的区别但是查询语句就会各有不同。
打开我们编写的sql.asp漏洞文件我们会看到sql="select * from admin where id="& id 这样的查询语句,其为典型的数字型注入。这时我们就可以利用and 1=1和and 1=2判断方法来判断是否存在漏洞。
修改sql.asp代码如下:
<!--#include FILE="conn.asp"-->
<%
id=request("id")
set rs=server.CreateObject("adodb.recordset")
sql="select * from admin where id='"& id &"'"
response.write "sql语句为:"&sql
rs.open sql,conn,1,3
if rs.eof or rs.bof then
response.write "<br>暂无记录"
else
response.write "<br>返回信息是:"&rs("username")
end if
rs.close
set rs=nothing
set conn=nothing
%>
这里修改了sql.asp中的查询语句为字符型语句,我们再来试试and 1=1和and 1=2会发现都会返回错误信息。
我们会发现查询语句中我们输入的信息被单引号包含起来导致成为一个整体字符串,所以查询语句会查询一个为“1 and 1=1”和 “1 and 1=2”的id,这个id当然不会存在了就导致出现错误。所以针对字符型注入我们需要对单引号进行匹配,就产生了“' and '1'='1”和“'and '1'='2”这样的闭合字符型注入的判断语句。我们输入这样的判断语句就会发现跟数字型注入一样的返回。
而搜索型注入是因为其常用在搜索查询中而命名的。我们继续修改sql.asp为如下代码:
<!--#include FILE="conn.asp"-->
<%
id=request("id")
set rs=server.CreateObject("adodb.recordset")
sql="select * from admin where id like '%"& id &"%'"
response.write "sql语句为:"&sql
rs.open sql,conn,1,3
if rs.eof or rs.bof then
response.write "<br>暂无记录"
else
response.write "<br>返回信息是:"&rs("username")
end if
rs.close
set rs=nothing
set conn=nothing
%>
继续利用数字型查询发现又都显示错误。我们发现跟字符型产生的错误一样都被单引号包含成为一串字符串了。
继续对搜索型进行匹配,发现搜索型比字符型仅仅多了一对“%”,那么就产生了“%' and '%1%'='%1”和“%'and '%1%'='%2”这样的闭合字符型注入的判断语句。我们输入这样的判断语句就会发现也跟数字型注入一样的返回信息。(注意:“%”的URL编码为%25,如果发现查询并没有我们输入的“%”那么就需要手工把URL中的%改为其编码%25)
总体来说各种注入类型之前唯一不同的就是查询中的闭合方式,而我们在入侵检测过程中就会根据测试的各种闭合方式来判断属于那种注入类型。
- 注入中的数字型,字符型,搜索型的区别
- ORACLE中字符型与数字型的类型转换
- Oracle数字型,字符型,日期型函数
- 在单片机实现数字型转换为字符型(itoa函数的实现)
- PowerDesigner 批量生成日期型、中文字符型、数字型测试数据
- PowerDesigner批量生成日期型、中文字符型、数字型测试数据
- SQL字符型字段按数字型字段排序实现方法
- SQL字符型字段按数字型字段排序实现方法
- SQL字符型字段按数字型字段排序实现方法
- 搜索型注入的文章
- 搜索型注入的文章
- ASP搜索型注入
- 搜索型注入
- access搜索型注入
- 搜索型注入点的找寻和注入方法
- 总结搜索型手工注入的全过程
- 总结搜索型手工注入的全过程
- ③基于字符型的SQL注入
- XEN
- JAVA连接MySQL步骤以及找不到驱动解决办法
- 细节决定成败
- IO学习(三)
- oracle erp
- 注入中的数字型,字符型,搜索型的区别
- 在DOS下添加用户
- 高斯消元法解异或方程组 模板
- 10--26sql 看看肯定是有用的
- 链接库的例子
- C#的MouseClick和MouseDoubleClick事件讲解
- 【高斯消元解XOR方程组】各种题
- GLSL 绘制管线
- POJ 1504 Adding Reversed Numbers