문제를 보면 알 수 있지만 .NET 프로그램을 리버싱해야 하는 것 같다.
파일을 실행하니 사용자로부터 입력을 받는다. 임의의 수를 넣었더니 에러가 뜬다..
.NET 기반의 프로그램은 .NET 용 디컴파일러를 이용해 분석할 수 있다.
.NET Reflector 라는 프로그램으로 디컴파일되어 소스코드를 확인할 수 있다. 정확한 num 값을 넣는다면 복호화 작업을 거친 후 플래그를 출력하는 것 같다.
위 소스코드에서 중요한 부분은 num, num2, num3 변수와 if((num^num2)==num3) 소스 코드이다. xor 연산의 특징으로 2개의 값을 알고 있다면 나머지 1개의 값도 알 수 있다. 따라서 num2^num3 하면 num을 구할 수 있다.
num2^num3 값을 10진수로 입력하면 다음과 같이 flag 를 출력한다.
flag{I'll create a GUI interface using visual basic...see if I can track an IP address.}
'ctf' 카테고리의 다른 글
[HolyShield 2016 CTF] Memory (2) | 2016.01.21 |
---|---|
[CodeGate 2013 CTF] binary 100 (1) | 2016.01.04 |
[CSAW 2013 CTF] csaw2013reversing1.exe (0) | 2015.12.31 |
[CSAW 2013 CTF] csaw2013reversing2.exe (0) | 2015.12.31 |
[SECCON 2015 CTF] reverse-engineering-android-apk-1 (0) | 2015.12.27 |