[드림핵] Secure Mail

리안·2024년 1월 25일

Reversing

목록 보기
6/13

이 문제를 풀었다.
(사실 rev-basic-9 풀려고 했는데... 못 풀어서...ㅎ)
그리고 웹 리버싱이라 좀 재밌어보이기도 해서 라잇업 참고해가면서 풀었다.

문제파일은 HTML 파일인데,

이렇게 생겼다. 맞는 6자리 생년월일을 입력하면 flag가 나오는 모양이다.
개발자모드로 소스코드를 확인해보니

자바스크립트 코드가 난독화되어 들어가있다... 일단 html body에서 _0x9a220 함수를 쓴다는 건 알 수 있지만...

다 안 나와있당.(뭐야?!)

js 코드 보기 좋게 만들어주는 사이트가 있다고 해서 파일 넣어봤는데
음............
알아보지 말자. 코드에 =도 굉장히 많은 게 복호화하고 싶은 생각이 들긴 하는데 백퍼 중간에 때려치울 것 같으니 시도도 하지 않는다.
라잇업들 참고해서 bruteforce 코드 짜서 콘솔창에 입력할거임 몰라몰라

아무튼 라잇업 참고하면서 알아낸 거 적어보자면

  1. bruteforce 하면 Wrong! 창이 계속 뜨니까
window.alert=function(){}

먼저 입력해주자.

  1. 쓸데없는 날짜들(15월이라든가... 75일이라든가...)은 필요없으니 연월일 각각 3번 반복문 돌리자.
    연도는... 90년부터 시작하면 편하겠지?!
  1. _0x9a220(YYMMDD)==true일 때 콘솔창에 YYMMDD를 출력하게 해주자.
for(var year=90;year<100;year++){
    for(var month=1;month<13;month++){
        for(var day=1;day<32;day++){
            var birthday=''
            birthday+=String(year).padStart(2,'0');
            birthday+=String(month).padStart(2,'0');
            birthday+=String(day).padStart(2,'0');
            if(_0x9a220(birthday)==true){console.log(birthday)}
        }
    }
}

이건 참고해서 수정했던 거고... 굳이 저렇게 문자열을 붙일 필요가 있나 싶어서

for(var year=90;year<100;year++){
    for(var month=1;month<13;month++){
        for(var day=1;day<32;day++){
        	var birthday=(year*10000)+(month*100)+day;
            if(_0x9a220(String(birthday))==true){console.log(birthday)}
        }
    }
}

연산하고 문자열로 바꾼 코드로도 수정해봤다.

참고한 코드는 잘 나오고
바꾼 코드도 잘 나온다~~

히히~!!

flag: DH{Brutef0rce_th3_secur3_mail}

재밌네...

0개의 댓글