[2018 X-MAS CTF] Xⁿ-Mas


정말 이게 다입니다. 매 실행마다 값이 달라지지 않는다는 점으로 보아, polynomial의 계수를 구하고 나면 그게 왠지 flag일 것 같다는 킹리적 갓심을 할 수 있습니다. 또 최대 50번의 질의를 하라는 점에서 뭔가 49차 다항식일 것 같습니다. 그러면 그냥 행렬을 만들어서 풀이를 하면 됩니다. 한 20개만 되었어도 그냥 직접 손으로 복붙한 다음 sage에서 계산했을텐데 50개여서 간단하게 파이썬 코드를 작성했습니다.


이 이후로는 sage에서 처리를 해주면 됩니다.

sz = 50
mod = 4109151247
A = Matrix(IntegerModRing(mod), sz)
for i in range(sz):
    for j in range(sz):
        A[i,j] = pow(i+1,j,mod)

b = vector(IntegerModRing(4109151247), [3458, 1785121792, 2993914695, 2262842519, 3514980949, 731612334, 1039513180, 1221307243, 175536861, 1093492218, 3642227580, 1499052940, 2622275053, 759450776, 210206349, 580100870, 784949049, 1766215172, 2416413541, 417239776, 916812787, 2727649683, 1041277215, 1745232362, 64716067, 1531284352, 3522292020, 2441861395, 1267143724, 4107819393, 3088353815, 3508812480, 3505134902, 2375686921, 3499089797, 1903361805, 3552501983, 436672127, 2359513422, 2253398298,
2081166476, 983350284, 108427053, 2768067791, 96823767, 3681543950, 2375023029, 4094918538, 1751121821, 297027069])
ans = A.solve_right(b)
flag = ''
for i in ans:
    flag += chr(i)
print flag[::-1]

'CTF > MISC + Coding' 카테고리의 다른 글

[zer0pts CTF 2022] MathHash  (0) 2022.03.22
[TSG 2021] Advanced Fisher  (2) 2021.10.05
[0CTF/TCTF 2019 Finals] ###game  (0) 2019.06.19
[PlaidCTF 2019] Project Eulernt  (0) 2019.04.15
[2018 X-MAS CTF] A Christmas Dilemma  (0) 2018.12.19
[2018 X-MAS CTF] The ultimate Christmas game  (0) 2018.12.19
  Comments