您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

5UCMS <= v1.2.2024 又一SQL注入分析

添加时间:2011-3-12  添加: admin 

详细说明:
最近在测试一个网站时,提交/admin/,浏览器闪现了”无忧网络管理系统”,GOOGLE搜索下载了一份最新版的源代码,发现问题如下:

文件..\plus\comment\save.asp

23行:Dim Comment_Aid,Comment_User,Comment_Content

24行:Comment_Aid = Request(“id”)

此外部提交的id值会被插入SQL语句中如下:

55行:Set Ns = DB(“Select [ID],[Cid],[Comments],[IsComment] From [{pre}Content] Where [ID]=” & Comment_Aid,3)

24到55行之间开发人员加了伪过滤代码如下:

44行:if Len(Comment_Aid) = 0 Or Not IsNumeric(Comment_Aid) Then Call Alert(Plus.Lang(“iderr”),Gourl)

45I行:f Len(Comment_User) < 2 Then Comment_User = “Guest”

46行:If Len(Comment_Content) < Plus.Config(“contentmin”) Then Call Alert(replace(Plus.Lang(“contentmin”),”$1″,Plus.Config(“contentmin”)),Gourl)

44行的要求是id必须有值,且必须是数字型,否则将会调用Alert(),搜索该函数如下:

文件..\inc\function.asp

193行: function Alert(byval Msgstr,byval Url)

if len(Url) > 0 then

on error resume next

if Isobject(conn) then conn.close ‘ 关闭数据库链接

if len(Msgstr) > 0 then response.write “<>alert(‘” & Msgstr & “‘);</>” ‘ 提示

response.write “<>location.href=’” & Url & “‘;</>” ‘ 跳转

response.end

else

if len(Msgstr) > 0 then response.write “<>alert(‘” & Msgstr & “‘);</>” ‘ 提示

end if

end function

该函数里是一个嵌套的if结构,如果Url为空,那么执行else之后的代码:

if len(Msgstr) > 0 then response.write “<>alert(‘” & Msgstr & “‘);</>” ‘ 提示

此语句仅仅打印了错误信息,并没有执行response.end,所以导致Alert()对id的数据类型检测失败,,,最终导致了SQL注入的发生

那么Url这个关键的跳转变量怎么来的呢,回去看save.asp文件

9行:Dim Gourl : Gourl = Request.ServerVariables(“HTTP_REFERER”)

这个就是罪魁祸首了,以下内容摘自网络:

“asp中Request.ServerVariables(“HTTP_REFERER”)可以取得来源地址。
以下情况可以取得值:
1.直接用<a href>
2.用Submit或<input type=image>提交的表单(POST or GET)
3.使用J提交的表单(POST or GET)
以下情况不能取得值:
1.从收藏夹链接
2.单击’主页’或者自定义的地址
3.利用J的location.href or location.replace()
4.在浏览器直接输入地址
5.<%Response.Redirect%>
6.<%Response.AddHeader%>或<meta http-equiv=refresh>转向
7.用XML加载地址 ”
在上面不可取值的第4条中,说明了,直接构造的该访问路径,使得Gourl 为空

关健词:SQL注入分析

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站