bilibili ctf 2020 程序员节网络安全挑战 解题报告
rui_er
2020-10-27 19:40:17
# bilibili ctf 2020 程序员节网络安全挑战 解题报告
比赛已经结束,最终得分:80pts。
[地址](https://www.bilibili.com/blackboard/activity-20201024.html) 里面的第二个“33的挑战状 —— 首届哔哩哔哩安全挑战赛”
注:可能有一些题(例如 T5)中每人的 flag 不同,请勿尝试直接输入博客中的 flag 进行解题。
# T1
题目地址进不去?没关系,万能的 view-source 大法好!
进入 `view-source:http://45.113.201.36/index.html` 发现这几行代码:
```js
<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:
```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,可以到 [这里](http://www.all-tool.cn/Tools/ua/) 查看!否则可能导致一些功能无法正常使用!**
(例如我原来的就是:`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
果然就是毒瘤,“结束亦是开始”竟然真的倒着来!
找到了 [这个](http://45.113.201.36/blog/test.php),jsfuck 解密后“程序员最多的地方”,就是 GitHub,然后发现 [这个](https://github.com/interesting-1024/end/blob/main/end.php),里面有 `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
未完成