hkhkhkh 2024. 7. 26. 14:13
반응형

poker게임 하나가 주어진다. 12 둘중에 하나를 입력해 임의의 플레이어 두명이 숫자가 하나씩 주어지고, 둘중 누가 이길지 결정에 내가 맞추면 점수를 획득한다

내가 얻은 점수와 99와 비교해 내가 더 크면 flag를 출력해주는 함수로 이동한다.(원래 99였는데, 바로 넘어갈 수 있게 1로 패치했다)

문자열을 살펴보니 플래그를 출력해주는 부분이 있었고, 따라가보니 sub_11A0함수로 이동했다.

 

해당 부분에서는 무한 반복문을 통해 다양한 비교구문이 있었고, 플래그를 출력해주는 변수를 보니 v75로 되어있었고, 비교문을 통해 복호화를 하는듯 보인다.

이 부분이 플래그를 출력하는 부분으로 이동하는 명령인데, jle 명령이 점프하지 않아야만 해당 함수를 호출한다. Jle 명령이 점프하지 않으려면 SF!=OF 또는 ZF=1 이렇게 되야된다.

Jlebp를 걸고 실행시켜보니 ZF=1은 되어있지만, SF!=OF는 안되어있었다. 찾아보니 SF플래그는 eflags7번째 인덱스를 갖고,

 

해당 명령을 입력하면 SF를 떨어뜨려 SF!=OF를 성립시킬 수 있다고 한다.

그리고 함수를 실행시켜 넘어가면 플래그가 출력된다.

반응형