본문 바로가기

[Wargame Write-up]/Backdoor CTF

[backdoor] 2013-bin-50 (50p)

첫 화면이다. binary 분석 문제이며, 인증키는 MD5 해시값의 SHA256 해시값이다.

 

 

 

32bit 버전을 받은 후, IDA로 분석했다.

 

main 함수 prolog 및 첫 부분이다.

 

 

 

위의 jle문(argc 비교문)에서 분기되는 실패 메시지이다. 실패 메시지는 붉게 처리하겠다.

 

 

 

argc가 1보다 클 경우 이러한 루틴을 거치고

 

 

 

바로 밑에 cout 문이 많이 나오는데, 별 의미는 없어 보여서 그냥 낚시용 코드로 간주했다.

 

그 다음 루틴인데, byte 단위로 무언가를 넣고 strcmpr 함수로 비교한다.

 

 

 

ASCII 범위 숫자일 경우, 단축키 R을 누르면 다음과 같이 그에 해당하는 글자로 변환해준다.

 

strcmpr 함수의 결과로 성공, 실패 분기가 이뤄지는데, 역시 실패 메시지는 붉게 물들였다.

 

 

 

성공 시 flag 함수로 이동하는데, 그 내용이다. 4바이트 단위로 대입하는 부분도 마찬가지로

 

 

 

이렇게 변환해준다. 그냥 cout 함수를 이용해서 flag를 출력하는 기능만 하는 것 같다.

 

 

 

실제 실행하면서 확인해보자. Kali Linux 2.0 i686을 이용했다.

 

설명하자면 우선, wget 명령어로 압축파일을 받고, unzip 명령어로 압축을 해제했다.

 

이렇게만 하면, 바이너리 자체에 실행 권한이 없어서 chmod에 +x 옵션을 주어 실행 권한을 부여했다.

 

 

 

실행해서 낚시 코드 뒤에 있던, strcmpr 함수로 입력값과 비교하는 문자열을 입력했더니 MD5 해시값이 출력되었다.

 

즉석에서 python의 hashlib 모듈을 이용하여 그것의 SHA256 해시값을 생성했다.

 

 

 

그 값으로 인증하면

 

 

 

50 Point를 획득한다.

 

 

'[Wargame Write-up] > Backdoor CTF' 카테고리의 다른 글

[backdoor] bin-easy (10p)  (0) 2016.10.01
[backdoor] authorized persons (30p)  (0) 2016.10.01
[backdoor] file reader (70p)  (0) 2016.09.30
[backdoor] 2013-web-50 (50p)  (0) 2016.09.30
[backdoor] test (1p)  (0) 2016.09.30