문제 종류 - Reversing
사용한 툴 - Python 3.x, IDA
nc ctf.j0n9hyun.xyz 9004
풀이
ELF 파일이 주어진다. IDA에 넣어보자.
main 함수 부분이다. check_key(&s) 값이 참이면 flag를 얻을 수 있는 거 같다.
check_key 함수를 봐보도록 하자.
encoding(a1) 값과 OO]oUU2U<sU2UsUsK이 같아야 하는 듯하다.
이번엔 encoding 함수를 봐보도록 하자.
이 부분이 keygen인데, 어떠한 문자열을 넣고 저 루틴을 모두 돌고나서에 결과가 OO]oUU2U<sU2UsUsK 여야 한다.
간단하게 파이썬을 이용해 어떠한 문자열을 추측해보자.
solve = []
answer = 'OO]oUU2U<sU2UsUsK'
v2 = 72
for i in range(0,len(answer)):
for q in range(32,127):
if ((q + 12) * v2 + 17) % 70 + 48 == ord(answer[i]):
solve.append(chr(q))
v2 = ((q + 12) * v2 + 17) % 70 + 48
break
print(''.join(solve))
코드를 돌리면, 문자열 하나가 나온다.
단, 개행을 조심하자.
'Wargame > HackCTF' 카테고리의 다른 글
[HackCTF] Basic_BOF #1 풀이 (100p) (0) | 2020.07.14 |
---|---|
[HackCTF] static 풀이 (250p) (0) | 2020.07.13 |
[HackCTF] Strncmp 풀이 (150p) (0) | 2020.07.12 |
[HackCTF] Handray 풀이 (100p) (0) | 2020.07.12 |
[HackCTF] Reversing Me 풀이 (100p) (0) | 2020.07.12 |