본문으로 바로가기

[Plaid CTF 2015] Reversing - Clifford

category CTF/Hacking Defense Contest 2015. 4. 21. 12:59

- 문제

Reversing (100 pts)

"It's a keygen problem"


(This is the original binary, it is 100% superseded by the new one and there is no reason you should look at it, but it is here for posterity. )



clifford_fb9d383f537c803a82b5040e801785e0.elf




프로그램을 분석하면 다음과 같은 조건을 확인할 수 있다.

1) 첫 번째 입력 값은 2~10까지 입력해야 한다.

2) 입력 값이 2~10인 경우에 따라 입력해야될 개수가 달라진다.

입력 값 개수 수식 : (n+n)*3 - (n*3) + 1

처음 입력 값이 2인 경우 : (2+2)*3 - (2*3) + 1 = 7

처음 입력 값이 3인 경우 : (3+3)*3 - (3*3) + 1 = 19

....

3) 입력한 값들은 다음과 같은 형태로 동적할당된 메모리에 입력된다.

초기 입력: 2, 입력 값: 1 2 3 4 5 6 7

1 2

3 4 5

0 6 7

초기 입력: 3. 입력 값: 1 1 1 2 2 2 2 3 3 3 3 3 4 4 4 4 5 5 5

1 1 1

2 2 2 2

3 3 3 3 3

0 4 4 4 4

0 0 5 5 5

4) 들어가는 숫자 값은 초기 입력된 숫자의 입력 값 개수보다 큰 값이 들어가면 안된다.

초기 입력: 2, 입력 개수: 7 -> 7보다 큰 숫자를 입력하면 실패

5) 1번째 열의 합계(sum)을 구한다.

5-1) 각 열의 합이 합계와 같아야 한다.

5-2) 각 행의 합이 합계와 같아야 한다.

........

6) 1번째 열의 1번째 값과 2번째 열의 1번째 값의 합이 0x14가 아니면 실패

7) 1번째 열의ㅣ 1번째 값이 9가 아니면 실패


무슨 자료구조 같은데 잘 판단이 안서서 소스로 구현했다.


ppp_cli.c



뭔지 모르겠다. 자료구조 같은데 -_-;; Ruina에게 Help를 외쳤더니 검색 신공 이 후 찾은 진의 이름이 선분형 육각진이란다. 다음 링크를 참조

Link : http://dairyong.com.ne.kr/hexagon6.htm


다음과 같은 파일로 입력하여 키를 구했다.



Your flag is: too_bad_this_took_20_years_to_find!!








'CTF > Hacking Defense Contest' 카테고리의 다른 글

[Plaid CTF 2015] Forensic - PNG Uncorrupt  (0) 2015.04.21
[Plaid CTF 2015] Crypto - Curious  (0) 2015.04.21
[Plaid CTF 2015] Misc - Sawed  (0) 2015.04.21
[Plaid CTF 2015] Forensic - Unknow  (0) 2015.04.21
[Plaid CTF 2015] CTF 종료..  (0) 2015.04.21