成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

sf雙十一解密答案及詳解及分析思路

el09xccxy / 875人閱讀

摘要:花了一個(gè)小時(shí)的時(shí)間,終于全部解密。第四關(guān)光棍節(jié)程序員闖關(guān)秀第關(guān)這一關(guān)讓我們觀察我們密碼的規(guī)律。然而我這里主要要表達(dá)的是一種分析思路。哈哈,到時(shí)符合主題雙十一。

注意

由于此處文章有長(zhǎng)度限制,本文是刪減版,如需查閱完整版,請(qǐng)?jiān)L問(wèn)如下地址:

鏡像一
或者
鏡像二

前言

今天上班百無(wú)聊賴的在群里發(fā)現(xiàn)一個(gè)有趣的鏈接光棍節(jié)程序員闖關(guān)秀,點(diǎn)開(kāi)之后渾身顫抖如獲至寶啊。
我最喜歡這種挑戰(zhàn)了。
花了一個(gè)小時(shí)的時(shí)間,終于全部解密。下面奉上思路和分析以及代碼。由于sf良好的前端氛圍,這里全部用JavaScript作為工具語(yǔ)言。
喜歡python的朋友可以參見(jiàn)我另一篇用python作為示例語(yǔ)言的解密一個(gè)有意思的解密
話不多說(shuō),時(shí)間寶貴,我們立馬開(kāi)始解密之旅吧:)

第一關(guān)

光棍節(jié)程序員闖關(guān)秀第1關(guān)

作為一個(gè)web入門(mén)的學(xué)員,我們自然而然的直接右鍵查看源文件:


光棍節(jié)程序員闖關(guān)秀第1關(guān)(總共10關(guān))

光棍節(jié)程序員闖關(guān)秀第1關(guān)(總共10關(guān))

提示: 從所有信息中找到進(jìn)入下一關(guān)的方法

進(jìn)入下一關(guān)

而實(shí)際上,我們不查看源文件也是可以的,直接在頁(yè)面上ctrl+a,就可以讓進(jìn)入下一關(guān)的鏈接變藍(lán),直接點(diǎn)擊即可。

第二關(guān)

光棍節(jié)程序員闖關(guān)秀第2關(guān)
這一關(guān)同上,我們也是先直接右鍵查看源文件,幸運(yùn)的是,它寫(xiě)在了注釋里。


光棍節(jié)程序員闖關(guān)秀第2關(guān)(總共10關(guān))

光棍節(jié)程序員闖關(guān)秀第2關(guān)(總共10關(guān))

密碼在哪呢?

進(jìn)入下一關(guān)

我們復(fù)制出密碼,然后填在上面網(wǎng)址的k=后面,k參數(shù)應(yīng)該是代表key,也就是密碼的意思。在以后的幾關(guān)里我們都是用這種方法來(lái)完成跳轉(zhuǎn)。

第三關(guān)

光棍節(jié)程序員闖關(guān)秀第3關(guān)

頁(yè)面上說(shuō),這關(guān)就沒(méi)有那么簡(jiǎn)單了。顯而易見(jiàn)的,我們還是查看源代碼,然而他們這次沒(méi)有給我們?nèi)魏翁崾?,一無(wú)所獲。
這一關(guān)才開(kāi)始登堂入室了,我們開(kāi)動(dòng)大腦想一想,這個(gè)密碼會(huì)藏在哪里呢?
開(kāi)動(dòng)腦洞分析吧:

cookies

Storage

css

http頭

console

...

我們一項(xiàng)一項(xiàng),最終在http頭里找到了疑似密碼的字段:

Content-Encoding:gzip
Content-Type:text/html; charset=UTF-8
Date:Fri, 11 Nov 2016 05:23:01 GMT
The-Key-Is:a87ff679a2f3e71d9181a67b7542122c
Transfer-Encoding:chunked
X-Hit:sf-web1


圖中部分即時(shí)我們要的key。
輸入網(wǎng)址中,我們即可來(lái)到第四關(guān)。

第四關(guān)

光棍節(jié)程序員闖關(guān)秀第4關(guān)

這一關(guān)讓我們觀察我們密碼的規(guī)律。
實(shí)際上不用他說(shuō)我們已經(jīng)發(fā)現(xiàn),這些密碼都是32位的,非常像一個(gè)md5有木有?
那么規(guī)律到底是什么呢?我記得上小學(xué)的時(shí)候就經(jīng)常有這種找規(guī)律的題,我們先推斷一下,規(guī)律可能是:

當(dāng)前的md5是上一個(gè)md5的結(jié)果

md5是某個(gè)有規(guī)律的數(shù)的結(jié)果

我們分別測(cè)試最后我們發(fā)現(xiàn)

md5("4");//a87ff679a2f3e71d9181a67b7542122c

那顯然易見(jiàn)的是,下一關(guān)5是

md5("5");//e4da3b7fbbce2345d7772b0674a318d5

其實(shí)如果各種嘗試都無(wú)法猜到規(guī)律的話,還有一個(gè)撞運(yùn)氣的做法,就是我們?nèi)d5解密的網(wǎng)站上試一下,a87ff679a2f3e71d9181a67b7542122c
的結(jié)果為4。也可以得到相同的結(jié)論。
但是這種方法只是一種碰運(yùn)氣無(wú)奈之舉,因?yàn)?b>md5是一種校驗(yàn)算法,已經(jīng)破壞了數(shù)據(jù)的原始結(jié)構(gòu),再不可能還原成原來(lái)的結(jié)果。
所謂"解密"就是窮舉法,自己用md5分別加密常見(jiàn)的字符串再將結(jié)果以key=value的字典方式保存到數(shù)據(jù)里,然后等用的時(shí)候再?gòu)倪@里面查找,
看是否有已經(jīng)碰撞出結(jié)果。具有很大的偶然性。

第五關(guān)

光棍節(jié)程序員闖關(guān)秀第5關(guān)
這一關(guān)開(kāi)始,就變得比較難了起來(lái)。
首先看到一個(gè)二維碼,我相信大多數(shù)人都和我一樣,先掃為快。但是手機(jī)掃描二維碼非常耽誤我們時(shí)間,而且不好分析。
我們百度搜索在線二維碼解析,然后傳上去這個(gè)圖片,結(jié)果竟然是:...

http://sf.gg/你被耍了什么都沒(méi)有

我了個(gè)去,我還不信邪,分別測(cè)試了

md5("http://sf.gg/你被耍了什么都沒(méi)有")
md5("你被耍了什么都沒(méi)有")

然后又按照第三關(guān)的步驟檢查了一遍還是一無(wú)所獲。
看來(lái)玄機(jī)確實(shí)就在這個(gè)圖片本身上,我們下載這個(gè)圖片,然后右鍵,詳情,看看密碼會(huì)不會(huì)在這些字段里。
尷尬的是里面竟然什么都沒(méi)有...
等等,什么都沒(méi)有?說(shuō)明這個(gè)頭片顯然是以一種非正常方式生成的。我們用十六進(jìn)制的方式打開(kāi)它。
此類工具有很多,此處我使用的是WinHex,發(fā)現(xiàn)里面有個(gè)字符串:

KEY:bdbf46a337ac08e6b4677c2826519542

它是ANSII編碼的,所以能被直觀的看到。也就是說(shuō),其實(shí)我們用系統(tǒng)自帶的記事本可以看到這個(gè)字符串的。
根本不需要WinHex之類的工具。然而我這里主要要表達(dá)的是一種分析思路。如果它這里是用的unicode編碼,或者含有中文時(shí)用的utf8編碼,
用記事本就不一定有效了。
還是建議大家掌握更多的訣竅和思路,結(jié)果并不重要。通關(guān)也不是目的,而是在這個(gè)過(guò)程中學(xué)到了什么東西。

第六關(guān)

光棍節(jié)程序員闖關(guān)秀第6關(guān)

f4de502e58723e6252e8856d4dc8fc3b, 只能告訴你這么多

我們同樣的用第三關(guān)的步驟檢查一遍,結(jié)果并沒(méi)有得到有用的信息。
看來(lái)玄機(jī)就在這個(gè)字符串上了。。我們還是老樣子,去解密下這個(gè)md5,然而這次就沒(méi)有那么幸運(yùn)了。沒(méi)有能找到對(duì)應(yīng)的明文。
實(shí)在沒(méi)辦法了,我們只能利用強(qiáng)大的搜索引擎了。。。。
坑爹的是我們竟然找到了這個(gè),第一條:

看來(lái)是他防水給我們通過(guò)了,好吧,雖然我到現(xiàn)在都沒(méi)弄明白這個(gè)key是怎么算出來(lái)的。。。

第七關(guān)

光棍節(jié)程序員闖關(guān)秀第7關(guān)

有問(wèn)題就Google是個(gè)好習(xí)慣! 再試試 ba9b101dd284c566b78042d278e422bd

好吧,看來(lái)上題本意就是讓我們谷歌啊。好吧,我們就按照他說(shuō)的,繼續(xù)谷歌ba9b101dd284c566b78042d278e422bd。
然而時(shí)間過(guò)的很快夜幕就要降臨,我們還是沒(méi)有找到有用的信息。
好吧,我們注意下,再試試后面有個(gè)空格,有沒(méi)有可能不是讓我們?cè)嚭竺娴年P(guān)鍵詞的呢,那后面的關(guān)鍵詞又是什么?

第八關(guān)

光棍節(jié)程序員闖關(guān)秀第8關(guān)

上一關(guān)讓我們學(xué)習(xí)到了聽(tīng)話并不是一個(gè)好習(xí)慣。舉一反三,桀驁不馴多么重要,當(dāng)年孫悟空要是沒(méi)明白那三下,說(shuō)不定我們現(xiàn)在還是唐朝。。
這一關(guān)他說(shuō)

有時(shí)候事情就是這么簡(jiǎn)單
鑰匙就在手里, 門(mén)卻不知所蹤

我放佛看到了他嘴角嘲弄的笑。嗯,忍了。
我們同樣查看源文件,


光棍節(jié)程序員闖關(guān)秀第8關(guān)(總共10關(guān))

光棍節(jié)程序員闖關(guān)秀第8關(guān)(總共10關(guān))

有時(shí)候事情就是這么簡(jiǎn)單

鑰匙就在手里, 門(mén)卻不知所蹤

一看我們就笑了。


那么大的GET,你當(dāng)我傻啊。我們把這個(gè)GET改成POST,回車(chē)一下,輕松過(guò)關(guān)。

第九關(guān)

光棍節(jié)程序員闖關(guān)秀第9關(guān)
嚯,這一關(guān)厲害了。目測(cè)大多數(shù)人要栽了。這一關(guān)也是最難的一關(guān),也是我要寫(xiě)本文的目的。
對(duì)于一個(gè)普通的web前端來(lái)說(shuō)可能是有些難了,因?yàn)檫@里面牽涉到很多其它的知識(shí)。幸而我不是一個(gè)前端。

然而我已經(jīng)看穿了一切!
首先 0 1 0 1 這種的明顯是組二進(jìn)制,下面有缺失的部分,我們先不管,我們先看看前面幾個(gè),打開(kāi)計(jì)算器,把這些二進(jìn)制轉(zhuǎn)幾個(gè)到十進(jìn)制看看。
發(fā)現(xiàn)它們?nèi)俏挥赼scii表的可見(jiàn)字符范圍。

32-126(共95個(gè))是字符(32是空格),其中48-57為0到9十個(gè)阿拉伯?dāng)?shù)字。
65-90為26個(gè)大寫(xiě)英文字母,97-122號(hào)為26個(gè)小寫(xiě)英文字母,其余為一些標(biāo)點(diǎn)符號(hào)、運(yùn)算符號(hào)等。

大學(xué)c語(yǔ)言入門(mén)課程,大家要記牢,以后用的地方很多。
我們?cè)囍g出前面不缺失的這部分,結(jié)果為

q6GDLaJ4yq9A7xFAnxyvsc/AT

我去,這什么鬼,這么長(zhǎng)的部分明顯不是key,那是什么呢?而且亂七八糟的像個(gè)密文。假使它是個(gè)密文,它又是什么加密的?
我們注意到中間有個(gè)/,我們所知的BASE64碼中間可以出現(xiàn)`,并且根據(jù)base64`的原理,它最后加密結(jié)果一定能被4整除。
我們看了下,共有8112組2進(jìn)制數(shù)據(jù),是個(gè)能被4整除的數(shù)。同樣的,據(jù)其原理,如果原字符串的長(zhǎng)度不足,可能要在最后補(bǔ)一到兩個(gè)等號(hào)。
有了以上這些線索,我們直接去最后一個(gè)二進(jìn)制看看是不是等號(hào)。
然而最后一個(gè)卻是00____01,很明顯是需要我們補(bǔ)齊中間四位的??磥?lái)這就是算____所代表數(shù)的契機(jī)啊??磥?lái)我們的路子走對(duì)了??!
下面我們?cè)赾onsole上執(zhí)行:

let code ="=".charCodeAt();
console.log(code);//61
console.log(code.toString(2));
VM335:2 61
VM335:3 111101

由此可知____代表的應(yīng)該是1111。哈哈,到時(shí)符合主題:雙十一。
由此,我們已經(jīng)嗅到了勝利的氣息,想必馬上可以到最后一關(guān)了。

我們把上面的二進(jìn)制列表復(fù)制下來(lái),用替換,來(lái)編輯成一個(gè)數(shù)組:

接下來(lái)我們百度一個(gè)在線base64解密工具。
等等,解密出來(lái)是一串亂碼?

對(duì)嘛,這么長(zhǎng)的一個(gè)base64顯然里面不是只有一個(gè)key啊??赡苄枰?jīng)過(guò)我們?cè)俅渭庸?,那么既然它不是一個(gè)字符串,很有可能是個(gè)文件。
于是我們選擇

解密為16進(jìn)制顯示,然后我們注意下結(jié)果里面的1f 8b 08,所有二進(jìn)制文件的頭部的幾個(gè)字節(jié)都是文件頭,一般作為識(shí)別文件用。
我們百度文件頭大全,然后發(fā)現(xiàn)1f 8b 08代表它是一個(gè)gz文件。
那接下來(lái)我們單純使用控制臺(tái)是不行了,我們用node環(huán)境來(lái)把這個(gè)buff輸出到一個(gè)文件中去。

var b = new Buffer(str, "base64");
var fs= require("fs");
fs.writeFileSync("test.gz", b);

然后用一個(gè)解壓縮工具解壓后,即可得到一個(gè)圖片:

為啥這個(gè)女的有點(diǎn)眼熟呢?好啦不管了,反正它上面的就是密碼,我們敲下來(lái)完成這一關(guān)。

第十關(guān)

恭喜, 你已經(jīng)通過(guò)了所有關(guān)卡

然而第十關(guān)竟然是個(gè)廣告。。好吧!

結(jié)語(yǔ)

寫(xiě)這篇文章用了我好幾個(gè)小時(shí)的時(shí)間,鍵盤(pán)都敲碎了,大哥們還不支持下?嘿嘿嘿。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80853.html

相關(guān)文章

  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語(yǔ)言和等其他語(yǔ)言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問(wèn)到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過(guò)的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語(yǔ)言和Java、python等其他語(yǔ)言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    BicycleWarrior 評(píng)論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語(yǔ)言和等其他語(yǔ)言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問(wèn)到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過(guò)的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語(yǔ)言和Java、python等其他語(yǔ)言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    tommego 評(píng)論0 收藏0
  • 墻裂推薦:搜云庫(kù)技術(shù)團(tuán)隊(duì),面試必備的技術(shù)干貨

    摘要:今天整理了一下近大半年以來(lái)的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫(xiě)過(guò)了,這個(gè)記錄的過(guò)程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 今天整理了一下近大半年以來(lái)的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫(xiě)過(guò)了,這個(gè)記錄的過(guò)程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...

    SegmentFault 評(píng)論0 收藏0
  • 墻裂推薦:搜云庫(kù)技術(shù)團(tuán)隊(duì),面試必備的技術(shù)干貨

    摘要:今天整理了一下近大半年以來(lái)的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫(xiě)過(guò)了,這個(gè)記錄的過(guò)程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 今天整理了一下近大半年以來(lái)的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫(xiě)過(guò)了,這個(gè)記錄的過(guò)程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...

    Neilyo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<