光棍节程序员闯关秀攻略

游戏链接地址:http://1111.segmentfault.com/

1、提示: 从所有信息中找到进入下一关的方法

ggj1

查看源代码,找到过关链接

ggj2

2、密码在哪呢?

查看源文件,密码在注释中

ggj3

3、这回就没那么简单了!

BurpSuite抓包,密码在Response包中

ggj4

4、观察密码的规律

根据提示,解密第4关的md5值

ggj5

根据密码规律,下一关地址就是5的md5加密值

ggj6

5、扫描二维码

刚开始直接用手机扫描二维码,发现调到错误的链接,在线扫描二维码也得到错误的结果

ggj7

将5.png图片下载到本地,然后用Notepad++打开,在结尾处看到密码

ggj8

6、只能告诉你这么多

根据给出的md5值google 搜索,可以直接搜索到对应的Key值

ggj9

7、有问题就Google是个好习惯!再试试

搜索这个Md5值,发现没有结果,这是个思维定式的问题,过关方法就是直接输入此md5到URL中,hehe…

ggj10

8、有时候事情就是这么简单 钥匙就在手里,门却不知所踪

查看源代码,发现是form的GET提交

ggj11

修改为POST提交,并添加提价的按钮,点击OK进入下一关

ggj12

9、光棍节的寂寞谁能懂

看到全是01二进制代码,部分代码是连续四位的_,肿么办呢?

解题思路(参考的攻略):

(1)将所有_替换成1也就是

____ 变为 1111 不愧是光棍节的大背景

(2)将所有的二进制代码变成ASCII码

(3)根据生成的ASCII得知是base64编码的,然后进行Base64解码

(4)生成的文件经测试是个压缩文件,修改后缀名.rar

(5)解压后的文件依然是个压缩文件,修改后缀.rar

(6)这时文件可以正常解压,是个图片文件,打开图片,看到光棍节福利,哈哈

ggj13

这个题消耗的时间是最多的,根据攻略写程序时,因为在windows下操作,之前文件通过.txt文件来操作,导致一个问题,就是windows下的写python程序换行默认是\r\n的,*nix中的是\n,最终导致最后解码的base64程序比正确解码后的文件大,如下图所示

ggj14

正确的程序时0a结束,即\n,而我解码后的程序时0d 0a结束,即\r\n,最终在解压的时候造成校验错误,解压失败。最后通过使用二进制文件,不用.txt文件,并且过滤掉\r\n的方式将这个差异排除掉,搞定问题

贴出本题的解答程序,前提是在.py目录下建立a的文件,不需要后缀名,内容是网页中的所有01以及_,直接运行就可以生成最终文件

import base64

f = open("a", 'rb').read()
str = f.replace("_", "1").replace("\r\n", " ")
s1 = str.split(" ")
s2 = ''

for i in range(len(s1)):
    b = chr(int(s1[i], 2))
    s2 += b

s3 = base64.b64decode(s2)
f1 = open("fuli.rar.rar", "wb")
f1.write(s3)
f1.close()

提交后提示闯关成功

ggj15

您可能还喜欢...