풀이 사전 지식
+ Coding
다항식 미분
크롤링
# Problem
# Round 1
# Solving strategy
1.
크롤링을 통해서 가져온 수식을 식으로 변환한다.
a.
sympy에 sympify 함수를 이용한다.
2.
를 구한다.
a.
는 sympy 모듈에 diff 함수를 이용
3.
인 지점을 구한다.
a.
sympy 모듈에 solveset 함수 이용
4.
주어진 값에 최대 값과 최소 값 그리고 인 지점을 다 넣어서 최대 최소를 구한다.
# Exploit
# Payload
import requests
from sympy import *
s = requests.Session()
URL = "http://5thdegree.sstf.site"
s.get(URL)
r=s.get(URL,headers={'session':''})
for i in range(30):
equation= r.text.split('y = ')[1].split('\n')[0][:-2].replace("x", "*x").replace("^", "**")
ran=r.text.split('\\( ')[1].split(' ')[0], r.text.split('\\( ')[1].split(' ')[4]
x = Symbol('x')
y = sympify(equation)
yprime = y.diff(x)
_ = solveset(yprime) #해
x = [y.subs(x, i) for i in list(_) + [int(ran[0]), int(ran[1])] if int(ran[0]) <= i <= int(ran[1])]
maxans = max(x)
minans = min(x)
data = {'max':maxans,'min':minans}
r=s.post(URL, data=data)
if i==29:
print(r.text)
print(r.text.split("Round ")[1].split("\n")[0])
Python
복사
# Flag
SCTF{I_w4nt_t0_l1v3_in_a_wOrld_w1thout_MATH_e8e13a03}
Plain Text
복사