提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
大概内容:
这是我的第一篇博客,是一位学长发给我练习ctf的小游戏,我会一直更新直到通关(希望我能通关)。游戏在这里。
以下是本篇文章正文内容`
一、准备阶段
作者并没有直接把第一关的链接给我们,需要我们右键或者是f12查看源代码
二、解题经历
1.第一关
代码如下:如果输入的不是两个空格就会错误
function check(){
if(document.getElementById('txt').value==" "){
window.location.href="hello.php";
}else{
alert("密码错误");
}
}
输入两个空格直接下一关
2.第二关
第二关这里右键被禁用了,使用f12打开网页源代码
代码如下:
var a,b,c,d,e,f,g;
a = 3.14;
b = a * 2;
c = a + b;
d = c / b + a;
e = c - d * b + a;
f = e + d /c -b * a;
g = f * e - d + c * b + a;
a = g * g;
a = Math.floor(a);
function check(){
if(document.getElementById("txt").value==a){
window.location.href=a + ".php";
}else{
alert("密码错误");
return false;
}
}
这里我是通过计算机计算得出的,但是发现有别的解法是控制台输入a可以得到密码424178但是我一开始用的是Safari浏览器不会在控制台输入,接下来我会使用火狐浏览器。
3.第三关
script type="text/javascript">
eval(String.fromCharCode(102,117,110,99,116,105,111,110,32,99,104,101,99,107,40,41,123,13,10,09,118,97,114,32,97,32,61,32,39,100,52,103,39,59,13,10,09,105,102,40,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,39,116,120,116,39,41,46,118,97,108,117,101,61,61,97,41,123,13,10,09,09,119,105,110,100,111,119,46,108,111,99,97,116,105,111,110,46,104,114,101,102,61,97,43,34,46,112,104,112,34,59,13,10,09,125,101,108,115,101,123,13,10,09,09,97,108,101,114,116,40,34,23494,30721,38169,35823,34,41,59,13,10,09,125,13,10,125));
有一串很长的代码,eval是一段执行函数,把它替换成输出函数可以了,用alert替换eval在控制台输入可以得到密码
4.第四关
这里刚进去的时候愣了一下,因为进去马上退出,前段时间学了点html,应该是把页面刷新时间设得很短,然后跳回原网页。可以直接使用view-source来查看页面源代码
eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--)d[c.toString(a)]=k[c]||c.toString(a);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('a="e";d c(){b(9.8(\'7\').6==a){5.4.3=a+".2"}1{0("密码错误")}}',15,15,'alert|else|php|href|location|window|value|txt|getElementById|document||if|check|function|3bhe'.split('|'),0,{}))
先有两段eval函数先执行第一段,再执行第二段就可以得到答案,但是这里我比较谨慎用老方法alert替换了eval,提示是将第一次的a全部换成大写并加上1也可以得到答案。
5.第五关
第五关说把密码藏在了页面里,先查看源代码,然后点击然后点击网络刷新一下查看返回包。因为monyer是梦之光芒的意思,所以这个就是提示。得到密码asdf进入第六关
6.第六关
第六关进去是一个图片,说起来很尬,我开始并不知道考察的是什么,直接搜了露出来的字。有点社会工程学的感觉,查看源代码会看到作者给的提示。看后缀可以知道这是域名在南非的一个杂志。打开谷歌一搜可以得到答案seventeen这题还有一个别的思路,是我从学长那里听来的,是将图片曝光到合适的亮度,也可以读出答案。提交时记得小写。
7.第七关
其实我也不明白这个提示二写的什么意思。但是不影响我写出来,这个时候需要给大家普及一下什么是MD5:这是百度上MD5的解释,说一点之外的东西,与base64做对比,它与base64不同,base64如果只改变一个字节,加密后的密码变化不大,但是MD5改变一个字节会是截然不同的密文,并非线性关系,安全性相对于base64大大提升。但是它并不是完美的,给大家介绍CMD5这个平台,里面收录了很多MD5的加密。直接复制密文得到密码eighteen8
8.第八关
刚进来作者给我们开了一个小小的玩笑,给了个假的404页面,打开源代码一看可以看到作者留下的提示。问题就来到了求10000以内的质数和。可以用python也可以上网查一查也可以用c用java
我使用的是c语言。得到答案:5736396
#include <stdio.h>
int main()
{
int i,j,k;
int sum=0;
for (i=2; i<10000; i++) {
k=sqrt(i);
for (j=2; j<=k; j++)
if (i%j==0)
break;
if (j>=k+1)
sum=sum+i;
}
printf("质数和为:%d\n",sum);
}
9.第九关
明天再写吧今天有点累了
总结
还没完结捏