Home
System Hacking
🐉

5th degree writeup

Type
CTF
년도
2022
Name
SSTF
분야
Coding
세부분야
MISC
2022/08/28 11:30
점수
100점대
1 more property

풀이 사전 지식

+ Coding
다항식 미분
크롤링

# Problem

# Round 1

# Solving strategy

1.
크롤링을 통해서 가져온 수식을 f(x)f(x)식으로 변환한다.
a.
sympysympify 함수를 이용한다.
2.
f(x)f^\prime(x)를 구한다.
a.
f(x)f^\prime(x)sympy 모듈에 diff 함수를 이용
3.
f(x)=0f^\prime(x) = 0인 지점을 구한다.
a.
sympy 모듈에 solveset 함수 이용
4.
주어진 값에 최대 값과 최소 값 그리고 f(x)=0f^\prime(x) = 0 인 지점을 다 넣어서 최대 최소를 구한다.

# 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
복사

# Reference