自己看了一下,代碼那部分亂了,可以自己用電腦看或者瀏覽器模擬電腦請求。
我把代碼順便截圖一起發一下。
不廢話了,直接從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: