reversing.kr autohotkey1
문제 파일을 열면 다음과 같이 나옵니다.
AuthKey = un_md5(DecryptKey) + " " + un_md5(EXE's Key)
readme.txt
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Ex:)
DecryptKey = 1dfb6b98aef3416e03d50fd2fb525600
EXE's Key = c944634550c698febdd9c868db908d9d
=> AuthKey = visual studio
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
By Pyutic
파일은 다음과 같네요. 여기서 복호화키하고 exe키 값을 구한 다음 각각 md5 복호화를 통하여 flag를 완성해주어야 합니다. 저도 이 문제 이해가 안가서 writeup를 참고했는데도 어려웠습니다. 왜 디크립트된 키값이 안나오지 고민하다가 수동 언패킹을 한 뒤에만 나온다는 것을 발견했습니다. 여러분도 혹시 upx툴을 이용해서 언패킹을 시도했다면 수동언패킹 한뒤 다시 한번 시도해보세요.
다음 OEP주소가 보입니다. 이제 여기서 TEXT값을 찾아줘야 됩니다.
UPX언패킹하면 EXE corrupted가 뜹니다. 의심스러우니 이 문자열을 더블 클릭해서 이동합니다.
근데 여기서 보면 위에 ahk.004508c7를 호출합니다. 이 부분 바로 다음 test eax,eax를 해줌으로써 exe corrupted를 띄울지 아니면 AUTOHOTKEY SCRIPT부분으로 점프할지를 결정합니다. 이 부분에다가 브레이크 포인트를 걸고 스텝인투를 해줍니다.
이제 차근차근이 스텝오버만 해줍니다.
그러면 다음과 같은 명령까지 도달합니다.
다음 주석된 DECRYPTED KEY부분을 지나면 EBX에 디크립트된 키가 뜹니다.
그리고 이제 AUTOHOTKEY SCRIPT를 지나면 ECX레지스터에 메세지 관련 정보가 뜹니다. 이부분을 DUMP영역으로 확인하면 다음과 같습니다.
이 부분이 EXE KEY값이 입니다.