다운 받으면 exe파일 하나를 준다



디컴파일을 해보면 입력값이 &unk_403065와 같으면 ShowFlag함수가 실행된다.


인자값으로 입력값이 들어가는 것을 보아 if문을 우회해서 함수를 실행시키는게 아니라 


원하는 입력값을 입력해야만 옳은 Flag가 나올것으로 보인다.


 &unk_403065의 값이다.

입력값과 v11을 xor연산 하는것을 보니 v11의 값을 알아야 하는데 v11은 GetK 함수들을 통해 생성되는 것으로 보인다.


디버깅을 통해 v11에 들어가는 값을 보니


GetK1 = 8

GetK2 = -56

GetK3 = 24

GetK4 = 40

GetK5 = -72

GetK6 = -24


이런식으로 나왔다.


입력값을 알아내기위해 v11과 &unk_403065를 한바이트씩 xor연산을 통해 출력을 하면 값이 나온다.



참고로 디버깅을 하다가 getk6함수에서 GlobalHandle함수만 호출하면 프로그램이 죽었다.



GlobalHandle함수에 대해 검색을 해보니 확실한 원인은 찾지 못했지만 


옛날에 window7이 나온지 얼마 안됬을 때 피카츄배구가 window7에서 안돌아가서 win7호환용으로 따로 피카츄 배구가 있었다고 한다.


xp용과 7호환용의 차이점을 보니 win7호환용에서는 이 함수를 쓰지 않았다고 한다.


정확히는 모르지만 그냥 이 함수는 쓰면 안될거 같아서 함수 호출하는 부분을 NOP 처리하고 풀었다.


근데 실행하면 되는데 디버깅하면 왜 안되는지 모르겠다.


Windows API can be painful some time. 라고 문제에 써있어서 GlobalHandle함수가 문제인것은 확실한것 같다.



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

RingZer0Team XSS Challenge 2  (0) 2016.10.20
RingZer0Team RingZer0 Authenticator  (0) 2016.09.06

+ Recent posts