상세 컨텐츠

본문 제목

[HackCTF-Reversing#5] keygen - 200 points

Reversing/HackCTF

by bing_su 2021. 1. 6. 03:48

본문

반응형
SMALL

HackCTF Reversing 다섯 번째 문제는 keygen이다.

 

main 부분이다. fgets를 통해 문자열을 입력받는다. 이 문자열이 check_key 함수의 인자로 들어간다.

일단 우리가 입력한 문자열 s가 al 값으로 전달된다. 이 함수가 종료되지 않기 위해서는 문자열의 길이가 9 이상이어야 하고, 64보다는 작아야 한다. 우리가 입력한 문자열을 encoding 함수에 인자로 전달해 반환된 값을 s2 문자열에 저장하고 있다. 결과적으로 encoding 된 문자열이 보이는 "OO]oUU2U<sU2UsUsK" 문자열과 같아야 문제가 풀린다.

encoding 함수의 내부이다. 이 함수를 이용해 입력해야 할 문자열 s를 알아낼 수 있는 코드를 짜 봤다.

이 코드 실행 결과를 출력하게 되면 아래와 같다.

이 결과를 토대로 서버에서 키 값을 입력해 주자.

처음 17글자를 모두 입력했을 때는 플래그가 나타나지 않았다. 어떤 문제일까 싶어 다시 보니, 문자열을 애초에 fget로 받고 있다. fgets 함수는 입력을 한 후 개행문자 \n을 추가로 붙인다. 따라서 맨 마지막의 & 값이 아닌 개행문자 \n을 포함해 17글자를 "A,d<&$+$''.+$&.&\n" 순으로 입력해 주면 플래그가 뜨게 된다.

 

fgets 함수의 특성을 간과하고 있었던 것 같다. 이렇게 keygen 문제도 풀게 되었다. 두 문제 남았다. ^----^

반응형
LIST

관련글 더보기

댓글 영역