前几天一个朋友让我帮他检测一下他网站程序的安全,为了不让我的面子掉一地只有硬着头皮帮他检测啦!

拿到他的源程序之后就开始我的检测之路啦!

首先我在网站的onews.asp里发现注入漏洞,代码如下:

<%owen=request("id")%>
<style type="text/css">
.content { font-size: 11pt; }
td{word-break:break-all}
</style>
<SCRIPT language=JavaScript>
var currentpos,timer;
function initialize()
{
timer=setInterval("scrollwindow()",50);
}
function sc(){
clearInterval(timer);
}
function scrollwindow()
{
currentpos=document.body.scrollTop;
window.scroll(0,++currentpos);
if (currentpos != document.body.scrollTop)
sc();
}
document.onmousedown=sc
document.ondblclick=initialize
</SCRIPT>
<%
Set rsnews=Server.CreateObject("ADODB.RecordSet")
sql="update news set hits=hits+1 where id="&cstr(request("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("数据库出错")
else
%>

上面的id直接传递给了owen,而owen又跳转到sql查询语句里,那这样就形成了注入

这样我就可以对它进行注入了。。

http://127.0.0.1/onews.asp?id=19 and 1=1

就在注入的时候它反回了防注入的提示,看来我是小看这小子啦!!提示如下:

非法操作!你的入侵记录我已经交给警方了你入侵吧↓

操作IP:127.0.0.1

操作时间:2013-1-22 12:11:05

操作页面:/onews.asp

提交方式:GET

提交参数:id

提交数据:19 and 1=1

如果是一般新手看到这里应该就放弃注入啦,但源程序已在我手里分析它的代码还是可以的,嘿嘿。。

在onews.asp源代码的头部我看到

<!--#include file="conn.asp"-->

这个conn.asp大家都应该知道是什么吧,我也不多说.

conn.asp源代码如下:

<!-- #include file="sql.asp" -->
<%
dim conn,connstr
on error resume next
connstr="DBQ="+server.mappath("data/nxnews.mdb")+";DefaultDir=;DRIVER={Microsoft
Access Driver (*.mdb)};"
Set conn=Server.CreateObject("ADODB.CONNECTION")
conn.open connstr
%>

在conn.asp文件的头部看到<!-- #include file="sql.asp" -->一看文件名就知道是防注入的东东。。

asp.asp源代码如下:

<%
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr
Fy_In = "’’’’防;防and防exec防insert防select防delete防update防count防*防%防chr
防mid防master防truncate防char防declare防<防>防=防|防-防_"
Fy_Inf = split(Fy_In,"防")
If Request.Form<>"" Then
For Each Fy_Post In Request.Form
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.Form(Fy_Post)),Fy_Inf(Fy_Xh))<>0 Then
Response.Write "<Script Language=JavaScript>alert(’’’’udb311友情提示↓请不要
在参数中包含非法字符尝试注入攻击本站,你的入侵记录我已经交给警方了你入侵吧’’’’
);</Script>"
Response.Write "非法操作!你的入侵记录我已经交给警方了你入侵吧↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:POST<br>"
Response.Write "提交参数:"&Fy_Post&"<br>"
Response.Write "提交数据:"&Request.Form(Fy_Post)
Response.End
End If
Next
Next
End If
If Request.QueryString<>"" Then
For Each Fy_Get In Request.QueryString
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))<>0 Then
Response.Write "<Script Language=JavaScript>alert(’’’’安全提醒↓请不要在参数
中包含非法字符尝试注入攻击,谢谢!’’’’);</Script>"
Response.Write "非法操作!你的入侵记录我已经交给警方了你入侵吧↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:GET<br>"
Response.Write "提交参数:"&Fy_Get&"<br>"
Response.Write "提交数据:"&Request.QueryString(Fy_Get)
Response.End
End If
Next
Next
End If
%>

在这段代码中我们可以看到两个重要的信息

Instr(LCase(Request.Form(Fy_Post))

从这句中我们可以知道它是对post提交进行了过滤

Instr(LCase(Request.QueryString(Fy_Get))

而这一句是对 get提交进行了过滤。。

分析到这里大家都应该想到了一个问题,它只是对POST和GET提交进行了过滤,那cookies提交呢。。。

这说明过滤不全。COOKIES注入大家都应该知道怎么利用吧!后面就不多写了

网站只分析了一下半,后面等再分析出什么问题再写出来吧!!

本人小菜如果有什么不足之处还请大牛们指出。。

转自:http://zone.wooyun.org/content/2450

相关内容:

突破 Sql 防注入过滤程序继续注入的一点方法、经验、技巧总结

留言评论(旧系统):

佚名 @ 2013-01-24 21:06:30

看到那个防注入的提示之后。作为一个没有被送快递经验的新人,弱弱的问下核大,要到什么程度,WJ才会受理这种貌似被入侵的案子呢?不要说随便打个单引号在url上,我的IP就会被送给WJ备案了吧。。。深深的想知道

本站回复:

这种提示仅仅是弹个消息框而已,不记录任何东西,吓唬傻逼用的…… 至于受理案子,呵呵,不多说……

佚名 @ 2013-01-24 21:10:08

还没说完呢。在这段代码中我们可以看到两个重要的信息: 1.他防注入了。。。 2.他记录的不是我的IP。。。(=^_^=)

本站回复:

仅仅是弹个消息框而已,不记录任何东西,吓唬傻逼……

佚名 @ 2013-01-24 21:14:32

有记录的,然后拉进黑名单屏蔽IP。。算狠了,每次都要换IP

本站回复:

这段代码没有。

一百天 @ 2013-01-26 01:36:49

敢问没有源码,你是不是什么都做不鸟呢?

本站回复:

那只能说你没有经验…… http://lcx.cc/?i=2262