完了完了,今天是否是作不完了……🥶php
1+1+2
這種字符串的結果;post = {'value': result}
s.post(url, data = post)
;r'(\d+[+\-*])+(\d+)'
能夠用來匹配123+456*789
這種算式;https://ctf.bugku.com/challenges#秋名山老司機
python
import requests import re url = 'http://120.24.86.145:8002/qiumingshan/' s = requests.Session() # 很關鍵,由於session保證了長連接,才能保證咱們在2s內post出請求,要否則post只會開啓一個新連接 source = s.get(url) expression = re.search(r'(\d+[+\-*])+(\d+)', source.text).group() # re.search()能夠找到字符串中匹配的某一段字符,這解決方案完美 result = eval(expression) # eval能直接把字符串轉換爲可執行的語句,完美 post = {'value': result} # 構造post內容,學到了post的內容是json print(s.post(url, data = post).text) # 輸出post後結果,學到了請求時添加post內容是用`data=?`
Bugku{YOU_DID_IT_BY_SECOND}
,真的是有機率獲得,多是py和php算的數不同……https://ctf.bugku.com/challenges#速度要快
web
6LeR55qE6L+Y5LiN6ZSZ77yM57uZ5L2gZmxhZ+WQpzogTlRVek5qZzM=
跑的還不錯,給你flag吧: NTUzNjg3
,可是填入並不對553687
,這個難不成是margin的值??腳本測試一下#!/usr/bin/env python # -*- encoding: utf-8 -*- #fileName : decry.py #createTime: 2020/09/18 23:34:52 #author : 喬悟空 #purpose : 此腳本用於快速響應目標url並post指定值 import requests url = "http://123.206.87.240:8002/web6/" session = requests.session() res = session.get(url).text print(res) for i in range(20): res = session.post(url,data={'margin':553687}).text print(res)
6. 看來是思路不對,再去看看,發現端倪,md,我明白了,我發現哪一個flag是一直在變的,原來如此,也就是說margin是在變的,也對,怎麼可能像以前想的這麼簡單吶……修改腳本express
#!/usr/bin/env python # -*- encoding: utf-8 -*- #fileName : decry.py #createTime: 2020/09/18 23:34:52 #author : 喬悟空 #purpose : 此腳本用於快速響應目標url並post指定值 import requests import base64 url = "http://123.206.87.240:8002/web6/" session = requests.session() # 保持長連接 res = session.get(url).headers['flag'] # 取響應頭中flag的動態變化值 print(res) res = base64.b64decode(res).decode().split(': ')[1] # 第一次base64 print(res) res = base64.b64decode(res).decode() # 第二次base64 print(res) res = session.post(url,data={'margin':res}).text # 快速post margin print(res)
KEY{111dd62fcd377076be18a}