题目描述
Solution
打开页面,按右键 View Page Source 查看源代码:
题目要求在 2 秒内计算一个复杂的表达式。我们多次刷新,观察到表达式会变化,突然:
我们按照题目要求用 POST 请求,发送value
参数给服务器。我们先编写一个简单 Python 代码来观察 Response Headers:
import requests
url = 'http://114.67.175.224:15421/'
resp = requests.get(url)
print(resp.headers)
可以发现每次响应服务器都会重新设置 Cookie,所以我们后续编写脚本要用session()
对象把请求控制在同一个会话中。
我们开始编写正式的解题脚本:
import requests
import re
url = 'http://114.67.175.224:15421/'
session = requests.session()
resp = session.get(url)
expression = re.search(r'(\d+[+\-*])+(\d+)', resp.text).group()
value = eval(expression)
print(value)
post_data = {'value':value}
print(session.post(url, data=post_data).text)
我们引用了正则表达式的search()
方法来匹配算术表达式,如果匹配成功它返回一个Match
对象,否则是 NULL 对象。正则表达式如果不熟悉,可查阅Python RegEx Cheatsheet。
多次执行脚本,有概率获得 Flag: