[Dreamhack]wargame/WEB

[Dreamhack] Funjs 문제

bigwhaleking 2024. 5. 13. 16:24

처음 페이지에 들어왔을 때 Find FLAG! 라는 문구와 함께 입력칸이 화면에서 계속 움직이는 것을 볼 수 있습니다.

페이지에서는 움직이는 것 까지 확인 할 수 있었고 소스 코드가 뭔지 알기 위해서 개발자 모드를 열었을 때 debugger라는 문구에서 멈추는 것을 확인 할 수 있습니다.

이 debugger라는 것은 자바스크립트 코드 실행 흐름을 따라서 점검을 하게 해주는 것인데 이 코드에서는 1초마다 실행이 되는 moveBox 함수가 있어서 점검이 안 되고 있습니다.

그렇기에 debugger문을 Add script to ignore list에 추가를 해야 합니다.

일단 Find FLAG! 라는 것이 계속 움직여 입력하기 힘들기 때문에 moveBox라는 함수를 삭제하면 Find FLAG!라는 것이 고정이 되게 됩니다.

 

이제 FLAG값을 찾기 위해서 FLAG가 어디서 어떻게 출력이 되는지 찾아 보겠습니다.

코드를 살펴 봤을 때 이 코드가 눈에 띄었는데요 만약에 _0x374fd6(0x17c) 가 0x24 가 아닐 때 _0x374fd6(0x185)를 출력한다고 나와 있습니다.

이 값이 무엇을 나타내는 알기 위해서 메인 함수를 console에다 불러오고 한 번 이 값들을 입력해 봤습니다.

Flag 값에 길이와 만약에 잘못 된 값을 입력했을 때 나오는 NOP ! 이라는 것을 알 수가 있었습니다.

이것을 봤을 때 0x24는 36이라는 숫자기에 Flag의 길이는 36이라는 것을 알 수 있습니다.

Flag 값은

길이가 36이고

flag[_0x374fd6(0x176)] == operator[i % operator[_0x374fd6(0x17c)]](_0x4949[i], _0x42931[i])

라는 조건이라는 것을 알 수가 있습니다.

조건에 맞춰 코드를 입력해 주게 된다면 Flag값이 나왔습니다.