bilibili ctf 2020 程序员节网络安全挑战 解题报告

bilibili ctf 2020 程序员节网络安全挑战 解题报告

比赛已经结束,最终得分:80pts。

地址 里面的第二个“33的挑战状 —— 首届哔哩哔哩安全挑战赛”

注:可能有一些题(例如 T5)中每人的 flag 不同,请勿尝试直接输入博客中的 flag 进行解题。

T1

题目地址进不去?没关系,万能的 view-source 大法好!

进入 view-source:http://45.113.201.36/index.html 发现这几行代码:

<script>
    $.ajax({
    url: "api/admin",
    type: "get",
    success:function (data) {
        //console.log(data);
        if (data.code == 200){
            // 如果有值:前端跳转
            var input = document.getElementById("flag1");
            input.value = String(data.data);
        } else {
            // 如果没值
            $('#flag1').html("接口异常,请稍后再试~");
        }
    }
})
</script>

flag1 不就是过关要用的东西吗,手动输网址进入 http://45.113.201.36/api/admin 看到下面这个 xml:

{"code":200,"data":"1b2a3078-01f7b16d-8e620caf-f21f54e0","msg":""}

回到答题首页,题号为 1,flag 为 1b2a3078-01f7b16d-8e620caf-f21f54e0 即可获得 10pts。

T2

老规矩,view-source 一下,发现下面那个 api 地址进不去了。

老老实实地回到原来网址,一行大字:需要使用bilibili Security Browser浏览器访问~

这是啥浏览器,百度搜不到?

果断想到改 userAgent!

例如我的 fireFox 就在网址栏输入 about:config,搜索 general.useragent.override,就可以改了。

警告:更改前请务必备份好原来的 userAgent,可以到 这里 查看!否则可能导致一些功能无法正常使用!

(例如我原来的就是:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0

将 UA 改成 bilibili Security Browser,刷新界面,发现 flag2: 6a4c1f7d-be44b65f-3583423d-9f5a63c9,填入答案即可。

T3

填个密码?按照惯例管理员账号为 admin,随手试一发密码 bilibili 竟然对了 /jk。

得到 flag:9c91dce9-31eafdca-89be9852-7e1fb730

T4

超级管理员,想到 Administrator,MD5 32 位加密得到 7b7bc2512ee1fedcd76bdc68926d4f7b,F12 存储里面看到 session,我们发送一个 session 和 role 的请求头到 http://45.113.201.36/api/ctf/4,其中 role 是上面那个 MD5,得到我的 flag:3b889d30-514ddd74-c8264fbb-2b6d25b4

T5

类似的办法,设置好请求头,获取到 user 后发送请求到 http://45.113.201.36/api/ctf/5?uid={uid} 即可,得到我的 flag:9537ded8-b97fe4dc-008608c8-d69723ed

至于怎么获取到 user 嘛,根据源码界面得到:暴力破解大法好(

T10

果然就是毒瘤,“结束亦是开始”竟然真的倒着来!

找到了 这个,jsfuck 解密后“程序员最多的地方”,就是 GitHub,然后发现 这个,里面有 end.php 源码,进入 http://45.113.201.36/blog/end.php,发现显示的一致,尝试 http://45.113.201.36/blog/end.php?id[0]=1,发现“还差一点点啦~”

尝试 http://45.113.201.36/blog/end.php?id[]=1&url=./flag.txt,发现一个图片,以文本形式打开,搜索 flag,找到最终答案:2ebd3b08-47ffc478-b49a5f9d-f6099d65

T8

发现 6379 端口是开放的,用 redis 获取 flag8:d436b982-2b81aa54-49a8d2db-87ab951a

此页面的其他 flag 应该是假的。

T6

emm,直接用 python 瞎二分调 API 找 flag(

结果:a2b0883c-ffbb8d17-9a3bbf1c-ed600c80

T7

未完成

T9

未完成