来源:自学PHP网 时间:2015-04-17 14:11 作者: 阅读:次
[导读] 一,SQl注入漏洞1,典型的Cookies注入漏洞文件:Shownews.asp问题代码:id=cstr(request(id))Set rsnews=Server.CreateObject(ADODB.RecordSet)sql=update news set hits=hits+1 where id=idconn.e......
一,SQl注入漏洞
1,典型的Cookies注入 漏洞文件:Shownews.asp 问题代码:id=cstr(request("id")) Set rsnews=Server.CreateObject("ADODB.RecordSet") sql="update news set hits=hits+1 where id="&id conn.execute sql sql="select * from news where id="&owen rsnews.Open sql,conn,1,1 title=rsnews("title") if rsnews.eof and rsnews.bof then response.Write("数据库出错") 很明显,id参数没有经过过滤直接代入数据库查询,其中cstr只是将数值型转换成字符型,但是直接输入注语句会提示出错,因为头文件包含防注入系统,但它只对Get和Post过滤,却没有对Cookies过滤,这样就可以进行Cookies注入了,具体方法可以用注入中转或者GreenBrowser自带的Js插件,我就不多说了,详细步骤可以看我以前的文章。 2,字符型注入 漏洞文件:UserEditPwd.asp 问题代码:www.2cto.com Action=trim(request("Action")) UserName=trim(request("UserName")) if Action="" and session("UserName")="" then response.redirect "UserServer.asp" end if if Action="Modify" and UserName<>"" then Set rsUser=Server.CreateObject("Adodb.RecordSet") sqlUser="select * from [User] where UserName='" & UserName & "'" rsUser.Open sqlUser,conn,1,3 显然username只过滤了空格边代入数据库查询。这是字符型的注入,而且程序员很配合的没有使用防注入系统,注入就产生了。由于用了session验证,利用时首先注册一用户,我就以用户shaun为例,注入语句如下:http://www.2cto.com /UserEditPwd.asp?Action=Modify&UserName=shaun' and '1'='1; http://www.2cto.com /UserEditPwd.asp?Action=Modify&UserName=shaun' and '1'='2; 3,搜索型注入 漏洞文件:News_search.asp 问题代码:key=Trim(request("key")) otype=Trim(request("otype")) BigClass=request("BigClass") 省略部分代码 Set rs= Server.CreateObject("ADODB.Recordset") if otype="title" then sql="select * from news where title Like '%"&key&"%' order by id desc" else sql="select * from news where content Like '%"&key&"%' order by id desc" end if rs.open sql,conn,1,1 可以看到,key未经过过滤就进行了数据库查询,因此造成了搜索型注入, 注入语句参考: http://www.2cto.com /News_search.asp?otype=title&Submit=搜索&key=1%' and 1=1 '%'=' http://www.2cto.com /News_search.asp?otype=title&Submit=搜索&key=1%' and 1=2 '%'=' 二,跨站漏洞 漏洞文件:FeedbackSave.asp 问题代码:Add=trim(request.form("Add")) Postcode=trim(request.form("Postcode")) Mobile=trim(request.form("Mobile")) Fax=trim(request.form("Fax")) email=trim(request.form("email")) Language=trim(request.QueryString("Language")) 省略部分代码 Set rs = Server.CreateObject("ADODB.Recordset") sql="select * from Feedback" rs.open sql,conn,1,3 省略部分代码 rs("CompanyName")=trim(request.form("CompanyName")) rs("Add")=Add rs("Postcode")=Postcode rs("Receiver")=trim(request.form("Receiver")) rs("Phone")=trim(request.form("Phone")) rs("Mobile")=Mobile rs("Fax")=Fax rs("email")=email rs("title")=trim(request.form("title")) rs("content")=htmlencode2(request.form("content")) rs("Publish")=trim(request.form("Publish")) if Language="ch" then rs("Language")="0" else rs("Language")="1" end if rs("time")=date() rs.update rs.close 这里Add,Postcode,Mobile,Fax,email等均没有进行过滤,可以再主题和Email那里填写代码, 三,上传漏洞: 漏洞文件:upfile_Other.asp 问题代码:fileExt=lcase(file.FileExt) Forumupload=split(UpFileType,"|") for i=0 to ubound(Forumupload) if fileEXT=trim(Forumupload(i)) then EnableUpload=true exit for end if next if fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" then EnableUpload=false end if if EnableUpload=false then 'msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType 这个是大家很常见的上传漏洞,可以上传php文件或者本地提交加空格绕过过滤,我就不多说了。 本文由左泪发表在:三年离歌 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com