1. Description
Score : 414
Written by: dwang
Windows? :thonk:
2. Write up
해당 문제 파일은 dll 파일이다. 해당 dll 파일을 IDA로 열어보면 위와 같다.
•
인자값 개수가 1이 아닌 경우 종료
•
인자값 개수가 1인 경우 CreateThread()함수를 이용해서 스레드 생성
StartAddress() 함수 내부로 들어가면 해당 GetModuleFileNameA()함수를 사용해서 현재 실행시킨 프로세스의 이름을 가져온 뒤 C:\\WINDOWS\\system32\\mspaint.exe 문자열과 비교한다. 해당 DLL 파일을 디버깅하기 위해서 현재는 c:\windows\system32\rundll32.exe로 되어 있는데 ZF 플래그를 1로 바꿔줌으로써 강제로 0x7FFFE7091061로 분기하도록 변조한다.
0x7FFFE7091061 주소부터 보면 난독화된 문자열로 여러 연산을 한 뒤 스택에 저장하고 메세지 박스를 실행하고 있다.
3. FLAG
hsctf{havent_seen_windows_in_a_while}