1. 程式人生 > >速度要快(Bugku)

速度要快(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()