自己看了一下,代码那部分乱了,可以自己用电脑看或者浏览器模拟电脑请求。
我把代码顺便截图一起发一下。
不废话了,直接从Basic开始。
LEVEL 1:
很简单,由题意基本可以知道,密码就在HTML里,查源码,搜password,
就出来了。
LEVEL 2:
能读懂的就没什么疑问了,忘记上传密码的文件了,显然服务器程序没办法从文件中取到值,也就是取到的为NULL,直接空密码过。
LEVEL 3:
一开始没怎么明白,不明白就看源码就对了。
定位到提交按钮,发现有个type为hidden的标签,后面显然是一个地址,试试看能不能去。
访问得出来的就是密码了。
LEVEL 4:
题目显然让我们去找一下这个发送邮件的问题了,F12开发者工具定位这个按钮,
又是一个hidden类型的,看到后面的value可以想到这是不是就是他的邮箱,如果将其改为自己的邮箱,服务器若是根据此值发送邮件,那么就可以将密码发送到自己的邮箱里了。
开发者工具修改此Element的值。
改为自己的邮箱后发送。
可以看到,这个逻辑确实是我们想象得那样,查一下邮箱,
密码就出来了。
LEVEL 5:
操作和LEVEL 4 一样就可以出来。就不多作解释了。
LEVEL 6:
由题目可以知道,这道题就不再是考HTML的基础知识了。而是考了密码学。
密码学其实就是规律题,这点是要谨记的,先填个123456进去看看加密后的字符串是什么。
然后自己可以建张表:
{【1->1】, 【2->3】, 【3->5】, 【4->7】, 【5->9】, 【6->;】}
没看出什么规律,反过来成654321试一遍。
{【6->6】 ,【5->6】, 【4->6】, 【3->6】 , 【2->6】, 【1->6】}
发现第一个的值都是一样的,第二个值比原值差一,第三个差二。
123456的6对应;,6+5=11 这里成了;,显然有过编程基础的就可以看出来了。
规律很简单:
第一位的ASCII码+0
第二位的ASCII码+1
第三位的ASCII码+2
……
第n位的ASCII码+n-1
而这里已被加密的串为:“6285e9k?”
自己查表不如极速编程,字符串处理的题目比较建议用C++来做,因为可以直接char类型和int类型做运算。
#include "stdafx.h"
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
char arr[9] = "6285e9k?";
for (int i = 0; i < 8; i++) {
arr[i] = arr[i] - i;
}
cout << arr;
return 0;
}
当然了,喜欢用Python的伙伴们也可以自己写一下。这是我写的:
estr = '6285e9k?'
dstr = ''
for i in range(0, len(estr)):
dstr += chr(ord(estr[i]) - i)
print(dstr)
以下是图式代码:
C++:
Python: