2020嗶哩嗶哩網(wǎng)安挑戰(zhàn)賽一般人視角
BiliBili 第一屆撞字典撞地址撞參數(shù)比腦洞比熬夜網(wǎng)安大賽完滿落幕撒花鼓掌

先放一下活動的鏈接,還有那個活動的入口(雖然活動已經(jīng)結(jié)束,靶機(jī)已經(jīng)關(guān)閉,但是還是放一下)
那么現(xiàn)在,故事正式開始

首先呢,我知道這個事的時候已經(jīng)比較晚了,因?yàn)樵谮s制物理實(shí)驗(yàn)競賽評比用的視頻,大概到晚上才問別人這是有什么活動,然后正式進(jìn)入賽道
第一、二題
首先呢,打開網(wǎng)頁先查看源碼,一眼掃過去就有兩個$.ajax,然后仔細(xì)一看一個給到了隱藏的input里面,一個顯示出來了。input里面是{flag1:ca5e7db3-b2f5f737-d1097b41-084239b5},顯示出來的是說要用bilibili Security Browser訪問。先在提交頁面試了下題目一,直接輸入那四串32位的串,+10分,有搞頭!然后什么瀏覽器什么的肯定是不存在的,那么簡單了,直接上UA插件,我瀏覽器上剛好有User-Agent Switcher?for Chrome,直接添加一項(xiàng)叫那個名的,然后刷新,{flag2:717430cd-1d8dcc44-bb9c263f-fd7bf273}。有感覺了!
第三題
提示要登錄,試了下??' or '1'='1??和??" or "1"="1??,很好,沒動靜。跑詞典什么的,姿勢不優(yōu)雅,所以看了下群,嗯,很好,有人說了,是admin和bilibili,幸好沒跑詞典,詞典哪會有bilibili這么個詞,拿到了(flag3:7b6efa6f-d26dc34f-025bee64-ac763539}
第四題
超級管理員才能看到……額,這連個輸入框都沒有就認(rèn)定我不是超級管理員?憑啥!所以F12大法然后點(diǎn)Network刷新一下,看到GET了一個/api/ctf/4,然后它認(rèn)定我不是超級管理員,那憑啥啊,所以點(diǎn)擊這個請求仔細(xì)端詳這個請求頭(Request Headers)。很好,只有兩個Cookie,一個是自己的session,另一個是role=ee11cbb19052e40b07aac0ca060c23ee。小學(xué)英語告訴我role是角色的意思,那么感覺它應(yīng)該是靠這個判斷的,那后面這串是什么呢,先猜是md5,去百度md5解密,輸入,得到是user。那么看來它就是靠這個判斷的了,接下來要猜測是superadmin, root, admin, administrator還是什么。猜單詞什么的不優(yōu)雅,群里看了下,是Administrator,竟然大寫首字母,太過分了,輸入計(jì)算md5,然后在F12>Application>Cookies里面修改cookie,{flag4:711245bd-e9fcf6ca-e53e32e3-8fa49cbe}
第五題
它URL有個參數(shù),是uid,看起來要遍歷uid了,這個簡單我喜歡,F(xiàn)12查看,看到以下代碼
? ? ? ? ? ? $.ajax({
? ? ? ? ? ? ? ? url: "api/ctf/5?uid=" + uid,
? ? ? ? ? ? ? ? type: "get",
? ? ? ? ? ? ? ? success:function (data) {
? ? ? ? ? ? ? ? ? ? //console.log(data);
? ? ? ? ? ? ? ? ? ? if (data.code == 200){
? ? ? ? ? ? ? ? ? ? ? ? // 如果有值:前端跳轉(zhuǎn)
? ? ? ? ? ? ? ? ? ? ? ? $('#flag').html("歡迎超級管理員登陸~flag : " + data.data )
? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? // 如果沒值
? ? ? ? ? ? ? ? ? ? ? ? $('#flag').html("這里沒有你想要的答案~")
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? })
再觀察一下,它還檢查你URL的uid是否為空,如果空還會給一個默認(rèn)值100336889,真棒,連遍歷起點(diǎn)都有了,直接復(fù)制它原來那段代碼,魔改一下,F(xiàn)12輸入到控制臺運(yùn)行
var run=1
var f=function(uid)
{
? ? ? ? ? ??$.ajax({
? ? ? ? ? ??? ??url:?"api/ctf/5?uid="?+?uid,
? ? ? ? ? ? ? ??type:?"get",
? ? ? ? ? ? ? ??success:function?(data)?{
? ? ? ? ? ? ? ? ? ??console.log(data);
? ??? ??? ? ? ? ????if?(data.code?==?200){
? ? ? ? ? ? ? ? ??? ? ??// 如果有值:前端跳轉(zhuǎn)
? ? ? ? ? ? ? ? ? ? ? ??$('#flag').html("歡迎超級管理員登陸~flag : "?+?data.data?)
? ? ? ? ? ? ? ? ????}?else?{
? ? ? ? ? ? ??? ? ? ? ??// 如果沒值
? ? ? ? ? ? ? ? ? ? ? ??$('#flag').html("這里沒有你想要的答案~")
? ? ? ? ? ? ? ? ? ? ? ? run&&f(uid+1)
? ? ? ? ? ? ? ? ? ??}
? ? ? ? ? ? ? ? }
? ? ? ? ? ? })
}
f(100336889)
很快,停了下來,100336921,得到{flag5:d161f74a-7c68dc16-4a71eb63-a9709ccc}

第六題?第十題。
出現(xiàn)了一個博客,先試著輸入了花里胡哨的一堆引號,啥都沒發(fā)生……啊這,瞬間腦子宕機(jī)。不過呢,作為一名合格的學(xué)生,能夠百度那是必須的,這一搜索沒想到在github找到了一個interesting-1024/end,然后一看,好家伙,這里還藏一道題

看了下,要intval($_GET['id'])為1,同時is_numeric($_GET['id'])為假,好家伙,要一個字符串轉(zhuǎn)數(shù)字輸出1同時還不能是數(shù)字的東西,一通百度,給intval傳一個數(shù)組就行。這段代碼直接復(fù)制到我服務(wù)器上,試了下id[]=就行。然后猜url路徑?這不優(yōu)雅,這GitHub下面的issue翻了一下,url=./flag.txt,然后然后然后,它竟然給我返回了一張圖片???我人直接傻了

直接懶得研究了,群里問了下,說在文件末尾,好家伙


第八題
接下來沒思路了,畢竟那個第六題看起來除了能把那些點(diǎn)全抓?。ㄓ织偭艘粋€)意外沒的弄了。那么……掃描端口?這不優(yōu)雅,讓我到github看看都有誰掃描過,嗯,果然有

再往下翻翻,嗯,不錯

{flag8:d436b982-2b81aa54-49a8d2db-87ab951a}
小插曲
翻了翻github發(fā)現(xiàn),第十題我繞過了很多東西,首先是第六題的時候,應(yīng)該拿詞典跑跑路徑,然后發(fā)現(xiàn)test.php,它返回一些[]{}!+構(gòu)成的字符串,想都不想先放F12控制臺看看是什么

是字符串。程序員最多的地方?stackoverflowgithub。然后搜索bilibili1024havefun找到那個end,然后做出第十題,我一個百度就繞過了這些
小插曲2
然后我就試著在我的網(wǎng)站上寫一個用js操縱瀏覽器獲取這些flag的,還不錯(也許后面會貼出來這個代碼)
第六題
在看第十題的時候就看到有人發(fā)了一個聊天截圖,是在問大佬第六題怎么解得,大佬回答“在一個很傻X的地方”,大佬!別罵了別罵了!你說的“傻X的地方”我找不到啊,看來我更傻X?。∪缓笥腥苏fReferer注入,然后我上晚自習(xí)去了,等下晚自習(xí)來了段python

然后又有了題目源碼


然后我把那個python代碼改了改

{flag6:a2b0883c-ffbb8d17-9a3bbf1c-ed600c80}
第七題
之前看到有個/api/images?file=頻繁出現(xiàn),而且伴隨著一個不用這個API的注釋,感覺可以搞,但是(省略若干字)發(fā)現(xiàn)有人撞出了路徑/api/images?file=../../../flag7.txt。{flag7:c91a34bb-c8389bc5-6abdfcd7-e2f1648b}
第九題
沒做出來,反正大家都沒做出來,從GitHub上看,很多人都發(fā)現(xiàn)了file=../../../secret.txt也有返回,應(yīng)該是第九題

大家也都知道這是base64,但是解出來還是亂碼,終于27日15:16,有人搞出來了,我在這把他的抄出來吧(鏈接:https://github.com/interesting-1024/end/issues/315)
首先要通過文件包含獲取 md5(SkRGWDZRZnJxelJQU21YME42MU04OWlwV1l0SlYvcEJRVEJPWWFYUXVHOGZBcnJ1bjNXS3hXRlpHd05uMjFjRw==).jpg ,即ae10c97f6de1129abb00b5c961394336.jpg。 平臺已經(jīng)關(guān)閉無法獲取,根據(jù)q群截圖得知,然后aes_key就在該文件里


from Crypto.Cipher import AES
aes = AES.new('aes_key'+'\x00'*9, AES.MODE_ECB)
s='SkRGWDZRZnJxelJQU21YME42MU04OWlwV1l0SlYvcEJRVEJPWWFYUXVHOGZBcnJ1bjNXS3hXRlpHd05uMjFjRw=='.decode('base64').decode('base64')
print aes.decrypt(s)
flag9-8b522546-e52d83b8-5682e05c-c8cb237c

總結(jié)一下吧,這個其實(shí)還蠻好玩的,大家湊一起討論這個還是蠻快樂的,自己動手搞出來的時候也很有成就感,只是不知明年還有沒有這個