码迷,mamicode.com
首页 > Web开发 > 详细

黑客游戏SuNiNaTaS WEB Level 1

时间:2015-12-07 00:19:28      阅读:421      评论:0      收藏:0      [点我收藏+]

标签:

 1 <%
 2     str = Request("str")
 3 
 4     If not str = "" Then
 5         result = Replace(str,"a","aad")
 6         result = Replace(result,"i","in")
 7         result1 = Mid(result,2,2)
 8         result2 = Mid(result,4,6)
 9         result = result1 & result2
10         Response.write result
11         If result = "admin" Then
12             pw = "????????"
13         End if
14     End if
15 %>

打开页面就是一个asp源代码,然后代码审计,提交正确答案。

随便提交一个1,用firefox firebug看下请求http://suninatas.com/Part_one/web01/web01.asp?str=1

很好,现在知道了源代码里面的str就是请求url里面的参数。

由于没有学过ASP语法,大概猜了下程序的功能,顺便翻了下ASP手册,(ASP页面默认是VBscript)。

第2行代码是接受请求,参数为str。然后第4行判断str不为空就继续,Replace()函数是替换函数,第五行就是把str里面的‘a‘替换为‘aad‘,然后赋值给result。

第6行代码就是把result里面的‘i‘替换为‘in‘,再赋值给result。Mid()函数是截断函数(我自己这样说的,官方说法不清楚)。第7行就是把result字符串截断成子串。

从第2位开始截取,截取2位,然后赋值给result1。第8行就是把result字符串截断成字串,从第4位开始截取,截取6位,然后赋值给result2。第9行就是连接result1

与result2,赋值给result,此时result的值仍然是字符串。第10行是输出result的值。第11行开始判断result的值是不是admin,是的话就返回pw,否则结束。

 了解了程序的大概功能了,接下来就是逆向把答案给推出来。

admin由两个子串组成的可能有6种,先列出来。

result1:null(空)  a  ad  adm  admi  admin 

result2:admin  dmin  min  in  n  null(空)

显然从第7行可以判断出返回的子串的长度是2,所以是第4组可能最大。

result1=ad,result2=min。

然后推出result的值为*admin(*代表一个未知的字符),接着由第5行就可以知道*其实就是a了。所以完整的result的值就是aadmin,最后得出str的值为ami。

祝贺一下自己吧!!

技术分享

Authkey : k09rsogjorejv934u592oi

黑客游戏SuNiNaTaS WEB Level 1

标签:

原文地址:http://www.cnblogs.com/soroki/p/5024798.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!