오늘은 DreamHacker의 웹 해킹 워게임 중 하나인 funjs를 함께 풀어볼 예정이다.
## 문제 설명:
문제 정보를 살펴보면 main 함수를 분석하여 flag를 획득하면 되는 것으로 보인다.
## 문제 풀이
사이트에 접속해보니 다음과 화면이 보인다.
위치가 계속 바뀌는 입력창이 나타난다. 소스 코드를 분석해보면 다음과 같은 함수가 존재한다.
우선 moveBox() 함수를 주석 처리하여 진행해보겠다. 이어서 소스 코드를 살펴 보면 다음과 같이 flag을 출력하기 전 두개의 조건문이 존재한다.
첫 번째 조건문은 flag[_0x374fd6(0x17c)]의 값이 0x24와 다르면 NOP!과 함께 return된 것을 확인할 수 있다. 즉, flag[_0x374fd6(0x17c)]의 값이 0x24와 같게 만들어야 한다.
입력창에 1234을 입력하고 개발자 도구를 활용하여 값을 출력해보니 위와 같이 4가 나왔고 1234567을 입력하고 출력해보니 7이 나온 것을 활용할 수 있다. 즉, 문자열의 길이가 0x24인 것을 확인할 수 있다. 파일이 주어졌으므로 "!="을 "=="로 변경하여 계속 진행하겠다.
이어서 두번째 조건을 확인해보면 flag[_0x374fd6(0x17c)]가 입력한 문자열의 길이이므로 길이만큼 반복문을 실행하는 것을 확인할 수 있다. flag[_0x374fd6(0x176)](i)와 특정 값을 반복 비교하고 다른 것이 하나라도 발생하면 NOP!과 함께 return 된다. 즉 비교하는 "특정 값"이 flag라는 것을 유추해볼 수 있다.
다음과 같이 간단한 script를 통해 FLAG를 출력할 수 있다
'Wargame > DreamHack' 카테고리의 다른 글
[DreamHack 워게임] fly me to the moon (0) | 2023.04.09 |
---|---|
[DreamHack 워게임] Tomcat Manager (0) | 2023.04.08 |
[DreamHack 워게임] web-ssrf (0) | 2023.04.06 |
[DreamHack 워게임] blind-command (0) | 2023.04.05 |
[DreamHack 워게임] command-injection (0) | 2023.04.04 |