Description

Category: Misc

Source: SECCON CTF 2017 Quals.

Points: 30

Author: Jisoon Park(js00n.park)

Description:

RunMe.py

import sys
sys.setrecursionlimit(99999)
def f(n):
    return n if n < 2 else f(n-2) + f(n-1)
print "SECCON{" + str(f(11011))[:32] + "}"

source : SECCON CTF 2017 Quals.

Write-up

간단한 프로그래밍 워밍업 문제이다.
코드를 보면 피보나치 수열을 구하는 함수가 재귀적으로 구현되어 있고, 실행해보면 상당히 오랜 시간 동안 프로그램이 실행되고, 값을 구하는데 실패한다.

재귀적으로 구현된 프로그램을 반복문을 이용하도록 수정하면 쉽게 답을 알아낼 수 있다.

def f(n):
        i = 0
        rn = 1
        rn1 = 1
        n = n - 2
        while (i < n):
                rn = rn + rn1
                rn1 = rn - rn1
                i = i + 1
        return rn

print "SECCON{" + str(f(11011))[:32] + "}"

문제에 있는 바와 같이, 피보나치 수열의 11011번째 항을 구하면 된다.

Flag : SECCON{65076140832331717667772761541872}

'writeups > Coding|misc.' 카테고리의 다른 글

plz variable  (0) 2019.11.25
input  (0) 2019.11.25
algo-auth  (0) 2019.11.25
PWN  (0) 2019.11.23
JPEG file  (0) 2019.11.23

+ Recent posts