pe 파일을 받았다. 실행시켜보니 암호화 문제같았다.


암호화 알고리즘을 분석해 복호화 알고리즘을 구현하는 문제같아서 IDA를 통해 분석해보았다.



string 검색을 통해보니 hidden menu라는 문자열이 보인다.



입력 받는 부분에서 4를 입력하면 hidden menu가 나온다. 암호화 알고리즘은 fake인가보다.



hidden menu를 보니 숨겨진 flag를 찾는 게임이라고 하고 각 단계별로 stage5까지 있다.



먼저 입력을 받으면 바이트 단위로 XOR연산을 하는데 


input값과 메모리의 값을 xor해서 특정 값(v40)과 비교를 한다. 




v50="MVYLXYUARJ" 이므로 v50과 메모리의값을 XOR연산하면 stage1의 input값이 나온다.


후에 안티디버깅을 해주는데 레지스터값 수정을통해 우회한다.



stage2는 특정 구조체에 있는 값을 비교해주는데 디버깅을 통해 메모리 값을 변조하여 우회하였다.



stage3는 레지스트리값을 검증하는데 HKEY_CURRENT_USER -> Hellow -> hellow_FishWorld 라는 레지스트리가 있기만 하면 통과된다.



regedit을 통해 레지스트리를 생성해주었다.



stage4는 stage2와 마찬가지로 특정 구조체의 값을 디버깅을 통해 변조하고 


간단한 안티디버깅을 하는데 마찬가지로 레지스터값을 변조해 우회하면 된다.



stage5는 stage1과 마찬가지로 input값을 특정값과 XOR연산해서 비교한다.



이번에는 v36과 비교를 하는데 간단한 코딩을 통해 stage5의 input값을 알아내었다.



최종적으로 v42에 위에서 단계별로 통과하며 얻은 값을 붙여주는데 v42를 통해 연산을 해서 c라는 파일을 생성한다.



파일 시그니쳐를 보니 png파일이다.




확장자를 붙여주니 올바르게 이미지가 보이고 클리어


'문제 > CTF' 카테고리의 다른 글

2016 WhiteHat Contest JB  (0) 2018.04.09

+ Recent posts