初入python,看到很多大佬都是通過寫指令碼的方式獲取到flag,因為抓到的包的response裡falg一直會變。這裡呈上大佬的python指令碼。順便學習,把函式的用法記下,方便日後自己的學習。
#coding:utf-8
import requests #引入模板
import base64
s =requests.session() #記錄session
headers =s.get("").headers #獲取http標頭檔案
str1 = base64.b64decode(headers['flag']) #以base64譯碼頭檔案中的flag
str2 = base64.b64decode(repr(str1).split(':')[1]) #以:為分割,取:後面的字串解碼
data= #把解碼的字串賦給margin
flag = s.post("",data=data) #應題目,把marginpost
print(flag.text) #獲得flag
python repr()函式是將物件轉化為供直譯器讀取的形式。python split()函式語法str.split(str="",num=string.count(str))[n]
引數說明:
str:表示為分隔符,預設為空格,但是不能為空('')。若字串中沒有分隔符,則把整個字串作為列表的乙個元素
num:表示分割次數。如果存在引數num,則僅分隔成 num+1 個子字串,並且每乙個子字串可以賦給新的變數
[n]:表示選取第n個分片
bugku 速度要快
在源 裡有乙個提示,說傳遞margin引數,但是又不知道傳什麼,在響應頭里有個flag,應該是base64加密的,然後解密後發現好像還可以再解密一次,讓後再此解密,所以就把base64解密的數值傳過去試試。但是好像它一直在變,讓後就要寫指令碼自動傳遞,我也不知道為啥。寫指令碼和一直變又什麼聯絡嗎,但...
bugku 速度要快
開啟題目 抓包 但是多go幾次就會發現flag值是動態改變的,所以傳送post請求時必須與get請求在同一會話下才能行。先把flag拿去base64解碼 py指令碼如下 import requests import base64 url session requests.session myrequ...
bugku 速度要快
發現了注釋資訊以及head裡面有flag欄位,明顯是乙個base64,嘗試解密提交失敗。注釋說要傳送乙個key為margin的post資料,重新整理多次發現flag都不同,所以只能指令碼了 import requests import base64 import re 正則匹配模組 s reques...