目录:

1.前言

2.页面后面是什么?

3.真正的秘密只有特殊的设备才能看到

4.密码是啥?

5.对不起权限不足~

6.别人的秘密

7.结束亦是开始

8.前五题一键出flag脚本


1.前言

 昨天是10月24号,国内行业内的人几乎都把这一天作为程序员的节日了。本来在B站上看Geekpwn比赛的我,突然发现B站也搞了一个安全挑战赛。ctf打的少没啥经验。

 后来有人在github上说,这个整的就是NU1l的屠榜赛。人家Nu1l可是国内有名的CTF战队。不知道的百度一搜一大堆。


2.页面后面是什么?

http://45.113.201.36/index.html

 这第一题就有点懵,打开就一个index页面。

审查元素:

删除type的hidden属性看看:

删除type后flag1就出来了。

flag1:5f8a5e0b-058db475-2839dfb2-dce9500d


3.真正的秘密只有特殊的设备才能看到

http://45.113.201.36/index.html

代码审查:

 在前端代码中提到:需要使用bilibili Security Browser浏览器访问。一开始挺蒙的,访问/api/ctf2接口啥也没有。

 只能看到api接口有"code"、“data”和“msg”字段。正在一筹莫展的时候,在群里有人说改UA,顿时我就明白了。看来还是CTF玩的少,这源码里给的提示看不懂啊。

 可以看到,访问api接口,修改User-Agent后,flag2就显示在data字段中。为什么要提这个呢?因为有个大佬根据这api的规律(前5题flag都在data字段中)写了一个python脚本,只需要run一下,前五题的flag就出来了。

flag2: 38810a10-6f2122e7-95e13664-ddadafd5


4.密码是啥?

http://45.113.201.36/login.html

 打开页面,发现了了登录框,首先试了万能密码,发现不行。用Burpsuite批量跑了SQL注入和xss注入,无果。

 看来只剩弱口令了,构造字典进行爆破,没想到爆破成功了。账号密码:admin  bilibili

flag3:618a524f-bb29ead4-741c2e2a-c20e1184


5.对不起权限不足~

http://45.113.201.36/superadmin.html

审查代码:

  上面提到只有超级管理员才能看见,提示我们要提权,怎么提权呢?超级管理员:administrator。怎么才能成为超级管理员呢?

 在页面的Cookie中发现有role参数。发现role的值是32位,MD5解密看看。

 user,那我现在知道要怎么伪装成超级管理员了。尝试了administrator的MD5,发现不行,原来A得大写。Administrator的md5是:7b7bc2512ee1fedcd76bdc68926d4f7b

flag4:9d5a3580-3d683787-54487951-0beae5ed


6.别人的秘密

http://45.113.201.36/user.html

审查代码:

代码解释:

 下面的正则我也看不懂,要好好记录一下。

var reg = new RegExp("(^|bai&)"+ name +"=([^&]*)(&|$)");

这个正则是寻找“&+url参数名字=值+&”,&可以不存在。

var r = window.location.search.substr(1).match(reg);

if (r!=null) return unescape(r[2]); return null;

 这里是开始匹配,找到了就返回对应url的值,没找到返回null。match()方法可以在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

 提供了一个api接口:/api/ctf/5?uid=,有uid参数。这里某个大佬写了个遍历uid的py脚本,拿到了flag5。在原来的基础上我改了改。

bctf5.py:

#!/usr/bin/python3# -*- coding: UTF-8 -*-# Author:unknow# Rewrite by afeiimport requestsimport jsonimport sys'''session = input("请输入你的session:")headers = { 'Cookie': 'session = ' + session + ';role=7b7bc2512ee1fedcd76bdc68926d4f7b'}for i in range(100336889, 999999999): response = requests.get('http://45.113.201.36/api/ctf/5?uid=' + str(i), headers = headers).json() if response['data'] != '': print("The bctf5 flag is:", response['data'])'''def flag5(): if(len(sys.argv) < 2): print("-----------------------------------------------") print(" ") print("Useg: python %s eg: eyJ1aWQiOiIzODQ5OTQ1OTcifQ" % sys.argv[0]) print(" ") print("-----------------------------------------------") return session = sys.argv[1] headers = { 'Cookie': 'session = ' + session + ';role=7b7bc2512ee1fedcd76bdc68926d4f7b'}

声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。