参与哔哩哔哩安全挑战赛的一点心得
ScreenShot_2020-10-24_21-36-47.png晚上闲着没事儿打开手机B站，登录界面画风突变，什么？！程序员节。好吧，确实有些孤陋寡闻，10.24原来是程序员节。尤其今年，2020-1024=996，哈哈，巧合罢了。总之瞎点就进了题目页，开始我真以为又是什么弱智玩意儿，把UI做的很漂亮，内容又没什么营养，B站活动老套路了。然而，这一次。事情并不这么简单。B站这次仿照夺旗战的规则设置了10个flag，要用各种办法找到flag才能加分。第一题的链接直接给到了服务器ip，答案需要看网页源码才能发现。到这里我其实已经隐约觉得不会那么小儿科，F12对于程序员是日常操作，但也足以过滤大批小白。第二题的提示是需要特殊设备才能看到，我首先想到的是手机，于是接着再F12里使用手机浏览，无果，再试着改成Linux，Mac，依然没有动静。这时候我才想起来去看页面上那么大的一排字。ScreenShot_2020-10-24_21-46-30.png需要时用这个并不存在的浏览器访问，好家伙，我直接设置了一个新的浏览器标识。果然，一刷新，答案就显示出来了。ScreenShot_2020-10-24_21-48-26.png第三题算是歪打正着。ScreenShot_2020-10-24_21-49-15.png不唬你，我真就只试了两遍。一看，啊，管理员の用户名，那直接用户名写个admin，密码也写admin，结果错了。再把密码改成bilibili，靠，这就是真正的秘密。社工直觉还是可以的。ScreenShot_2020-10-24_21-53-29.png第四题已经是第二天起来做的了，讲真这一题我弄了很久，甚至一度想放弃。打开网页的一分钟里我就想到了解法，却败在了工具上。网页的cookie中有一段很像md5的数值，磁链见多了的我一眼就看出来了。理论MD5是没法逆运算的，但毕竟md5值对应的字符是唯一的，所以常用的还是可以查到。这个查出来是user，所以我直接想到替换乘superadmin，admin，administrator这些。然而试了几个插件，都不行，甚至在群里看到了正解是Administrator的MD5，依然无效。下午就折腾单片机去了。晚上越想越不爽，还是要解出来，继续找工具。Burp是好，但是手头Java版本的问题装不上去破解的。无意间再Github找到一个八年前的Chrome插件，有效。ScreenShot_2020-10-24_22-02-15.png第五个题需要写个小脚本，手动遍历可太累了。ScreenShot_2020-10-24_22-04-15.png杯具的第六题，已经被橄榄了。网上看到第六题能做出第十题的结果，果然不错，用npp打开图片就能看到藏着的flag。ScreenShot_2020-10-24_22-26-22.png顺便找到了第八题的解法，现场装了个redis弄出来了，到这里已经涉及我的知识盲区。。现在总分已有70，第七题和第九题目前还没有消息，第六题如果服务器恢复了的话看看有没有办法弄出来。看到很多搞竞赛的大佬表示这不是真正的ctf，更像是解谜。确实哈，尤其你看破解密码那个。前4题能能解还是受益于我平时经常翻源码来获取网页上的一些资源，还有做网页测试，爬虫这些。第五题让我想到之前下载m3u8流的视频，他是一整串，当时有写过python去拉整个下载表。这次换成了网址遍历，开始的时候后我没加cookie，直接406，当场学了一手怎么把cookie包进去。说来惭愧，当时用B站挂机脚本的时候就在想这个cookie是怎么放进去的，然而真正学会还是在今天。整点这种活动挺好的，自己动手找到答案真的成就感满满。图片来源：哔哩哔哩
ScreenShot_2020-10-17_03-26-44.png玩过GTA线上的小伙伴对着页面一定不陌生，这是GTAOL里CEO办公室电脑登录的界面。GTA线上相比线下在地图上并没有太多变化，但没记错的话就是从CEO任务的出现开始，某一些建筑也被赋予了功能。这次做的是记账程序的登陆界面，之前光顾着改程序本身的代码了，这个登录界面稍微改了个背景就放着没管了。但回过头来想想，人家打开你这网站，先看到的就是登陆和注册界面，要是这里看上去很Low的话，人家连继续注册的欲望都没有了。这次做的界面几乎做到了1：1还原，不过，左下角加上了登录和注册的切换按钮，这个在GTA中是不存在的。注册界面我就照着这个风格自由发挥了一下。ScreenShot_2020-10-17_03-27-05.png增加了用户协议这个选项，如果以后要推广这个网站的话用户协议也是避免出现纠纷的重要元素。ScreenShot_2020-10-17_03-27-14.png惭愧地说，我直到前不久才真正的了解了Javascript，过去的我只是会复制粘贴人家写好的代码，也不知道具体是啥原理。漫展那会儿，Google的大佬过来给我系统化的把这些语言，框架，对应的软件都理了一下。我曾经甚至以为Java和Javascript是一个东西。。。目前我的理解是，JS在网页中是静态和动态之间的产物。他不像PHP那么动，也不像HTML那么静。稍微看了几个案例，照猫画虎的做了这个确认用户协议和Submit按钮的联动。在打勾之前，按钮是灰色的，且disable。打勾之后，按钮上色，且enable。除此之外，对于我的主页，我也常使用JS配合Json实现了部分的多语言适配。至于为什么是部分，目前能做的是在标签中的文字可以跟随选择变换语言，但是title暂时不行。还得继续研究研究。