未加星标

is_numeric的安全隐患

字体大小 | |
[web安全 所属分类 web安全 | 发布者 店小二04 | 时间 20101007 | 作者 路人甲 ] 0人收藏点击收藏

先看Vbs手册里的描述:

IsNumeric 函数
返回 Boolean 值指明表达式的值是否为数字。
IsNumeric(expression)
expression 参数可以是任意表达式。
说明

如果整个 expression 被识别为数字,IsNumeric 函数返回 True;否则函数返回 False。如果 expression 是日期表达式,IsNumeric 函数返回 False。

一些程序员在写代码的时候比较喜欢用isnumeric来判断参数是否为数字型,依次来杜绝sql注入的产生。但是并不是1这样的数字才符合条件,12e3,1d3,"1000,1000","1000,100"这样的计数法都符合条件,只要下面没用clng或者cint之类强行转换类型的函数,就给我们带来了不一般的用处。

如下面的代码:

<%
Dim id, conn, rs, strSql
id = Request("id")
If IsNumeric(id) = False Or id="" Then
Response.Write "非法数据"
Response.End
Else
id = CLng(id)
End If
Set conn = CreateObject("Adodb.Connection")
connStr = "rovider=SQLOLEDB.1assword=passersist Security Info=True;User ID=sa;Initial Catalog=pubs;Data Source=localhost"
conn.open connStr
If id<>"" Then
Set rs = CreateObject("Adodb.RecordSet")
strSql = "select * from authors where contract=" & id id=1
rs.open strSql, conn, 1, 1
While Not rs.bof And Not rs.eof
Response.Write rs("au_id") & "<br>"
Rs.Movenext
Wend
Rs.close
Set rs = Nothing
conn.close
Set conn = Nothing
End If

%>

然后提交http://localhost/sql_t.asp?id=1d3,返回如图所示.

实战测试:

is_numeric的安全隐患
is_numeric的安全隐患

在旁注的时候大家往往喜欢找个sql的下手,毕竟比access的用处要大,这样isnumeric帮了我们很大的忙,我在实战中发现不少站都可以用这个方法粗略的探测数据库类型,clng等函数处理过的不行,偶尔也会出现其他一些错误提示,具体视运气而定

本文web安全相关术语:黑盒测试方法 黑盒测试和白盒测试 网站安全检测 360网站安全检测 网络安全知识 网络安全技术 网络信息安全 网络安全工程师

tags: #160,id,rs,conn,IsNumeric,expression,函数,False,Response,gt,lt,Set,sql,返回
分页:12
转载请注明
本文标题:is_numeric的安全隐患
本站链接:https://www.codesec.net/view/7066.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | web安全 | 评论(0) | 阅读(6)