NOT4DOG
방명록 RSS 태그 글쓰기 관리자
 
[CTF] Dreamhack rev-basic-1 문제 Write-up
CTF Write-up 2021-12-29 17:29:02

반응형

문제) Reversing Basic Challenge #1

       이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여

       correct 또는 wrong을 출력하는 프로그램이 주어집니다.

       해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요!

       획득한 입력값은 DH{} 포맷에 넣어서 인증해주세요.

       예시) 입력 값이 Apple_Banana일 경우 flag는 DH{Apple_Banana}

 

chall1.exe 파일을 제공한다.

input을 받고 input 값과 chall0.exe 에 저장된 값이 같다면 FLAG를 확인할 수 있다.

리버스 엔지니어링을 위해  IDA를 사용하였다.

 

앞서 작성한 rev-basic-0 문제와 거의 흡사하다. 먼저 main 함수를 확인하였다.

main 함수

main 함수는 동일하니, 어느 부분에서 문자열 비교가 일어나는지 로직을 확인해보았다.

sub_140001000 함수

이번에도 동일한 sub_140001000 함수에서 비교가 진행되는것을 확인할 수 있다.

이전 문제와 다른 부분은 문자열을 IF문의 중첩으로 한 글자씩 비교하는 방식이다.

sub_140001000 함수 Pseudocode

IF문의 중첩으로 a1 배열에 있는 아스키 코드값을 순차적으로 비교하는 방식이다.

ASCII CODE : 67, 111, 109, 112, 97, 114, 51, 95, 116, 104, 101, 95, 99, 104, 52, 114, 97, 99, 116, 51, 114

이 아스키 코드를 영어로 변환하면 FLAG를 획득할 수 있다.

FLAG : Compar3_the_ch4ract3r 

반응형