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編碼,很難想到,還有最後上傳這裡把<尖括號給過濾了