[Dreamhack]rev-basic-0 write-up

최윤지·2024년 11월 4일

Reverse Engineering

목록 보기
5/7

#rev-basic-0

문제 파일 다운로드 후 실행


=> 입력한 문자열을 검증하여 'Correct' 또는 'Wrong' 출력

IDA 실행

문자열 검색


문자열에서 'Input : ', 'Wrong'뿐만 아니라 'Correct'라는 문자열 확인 가능
'Correct'는 검증과정을 통과했을 때 출력될 것으로 유추
=> 'Correct'이 출력되는 입력값을 찾아야함 -> flag

함수 분석

'Correct' 문자열 더블 클릭 후 상호 참조(단축키 X)를 사용하여 'Correct' 문자열이 사용되는 곳 확인
=> main에서 해당 문자열 참조

단축키 F5를 사용하여 main함수 디컴파일

main


sub_140001190 => printf 함수로 유추
sub_1400011F0 => scanf 함수로 유추

sub_140001190


printf 함수를 사용해 'Input : ' 문자열 출력

sub_1400011F0


사용자로부터 입력받은 문자열 반환

sub_140001000

sub_140001190으로 'Input : '을 출력
-> sub_1400011F0으로 사용자의 입력값을 받아 v4에 저장
-> v4를 sub_140001000의 인자로 사용하여 호출한 후, 반환값에 따라 'Wrong'이나 'Correct' 출력

사용자가 입력한 값과 'Compar3_the_string' 비교(strcmp() 함수 : 값이 같으면 0을 반환)
-> 값이 같으면 1을 반환('Correct' 출력), 다르면 0을 반환('Wrong' 출력)

확인

0개의 댓글