速度要快(Bugku)
這道題好坑的說……
一開始點開網頁原始碼,說讓我post傳一個margin過去,毫無思路……用burpsuite抓包看看
哇塞,在repeater裡看到了什麼!
驚喜!顯然是個base64編碼,趕快去解碼一下,得到了:
咦好簡單哦,半信半疑的把給的flag交了上去……Incorrect code……
(懵逼臉
雖然覺得不會這麼簡單……可是???????
------------------------------------------------------------------------正確思路----------------------------------------------------------------------------
跑到網上看大佬們寫的wp,知道repeater裡的那個讓我驚喜的flag值居然在變……它在變……go了幾發終於死心,真的會變嚶;
無可奈何開始寫指令碼……
先貼出程式碼:
import requests import base64 url="http://120.24.86.145:8002/web6/" r=requests.session() headers=r.get(url).headers#因為flag在訊息頭裡 mid=base64.b64decode(headers['flag']) mid=mid.decode()#為了下一步用split不報錯,b64decode後操作的物件是byte型別的字串,而split函式要用str型別的 flag = base64.b64decode(mid.split(':')[1])#獲得flag:後的值 data={'margin':flag} print (r.post(url,data).text)#post方法傳上去
從burpsuite中我們可以知道,我們看到的那個flag肯定是可以得到答案的,但是讓人糾結的地方就是會變而已;
下一步我們也知道了這個flag進行了base64編碼,只要進行解碼就可以了;
根據這些開始寫指令碼,詳見程式碼中的註釋;
跑完就出真正的flag了
---------------------------------------------------------------------------------------------------------------------------------------我是分割線哇
注:
沒有加mid=mid.decode()那一步時一直報錯;
——是因為字串有byte型別和str型別,有時運算元型別和操作型別不匹配就會報錯……這時候就要把型別轉換一下(無論是轉換運算元還是操作都行,只要兩者匹配
一個簡單的方法:
1、byte型轉str型
mid=mid.decode()
2、str型轉byte型
mid=mid.encode()