-
[Webhacking.kr] Challenge 54Wargame/Webhacking.kr 2023. 4. 1. 02:02반응형
Challenge 54를 풀어보자.
문제 화면을 보면 Password is 라는 문장과 함께 뒤의 값이 계속해서 변한다.
변화하는 값이 FLAG{ 라는 것은 알았지만, 동체시력의 한계 탓인지 더 이상은 모르겠다..

<Challenge 54의 문제 화면> 소스 코드를 보여주는 링크가 없으므로, 크롬 개발자 도구를 열어서 페이지를 확인해보도록 하자.
<script>를 보면 run과 answer의 함수가 있다.
run 함수는 값을 받아와 그것을 return하는 것 같다.
answer는 aview에 값을 입력하는데 setTimeout이 작아 굉장히 빠르게 넘어가는 것으로 보인다.
이 answer 함수가 페이지에 비밀번호를 보여주는 함수라고 생각하면 될 듯하다.

<Challenge 54 문제의 script 코드> 빠르게 넘어가는 비밀번호를 강제로 멈춰주면서 FLAG를 확인해 문제를 해결하면 된다.
Sources 페이지로 와 브레이크 포인트를 걸어주도록 하자.

<브레이크 포인트 설정> 20번 라인인 x에 run 함수를 수행하기 전 브레이크 포인트를 걸어주면서 비밀번호가 변하는 과정을 보았다.
answer가 총 38번 실행되면서 비밀번호가 꽤 긴 것을 알 수 있다.
멈춘 페이지를 종합하여 FLAG 값을 알 수 있다.


<FLAG 값 도출> 구한 FLAG 값을 메인 페이지의 Auth 창에 입력하면 문제가 해결된다.

<Challenge 54 문제 완료> 브레이크 포인트를 이용한 풀이는 문제를 푸는 속도가 빠르지 않다.
더 빠르고 쉽게 문제를 해결해보도록 하자.
answer 함수를 잘 보면, 비밀번호가 표시되는 aview에 innerHTML로 화면에 출력을 하고 있다.
aview.innerHTML에 단순히 '='이 아닌 '+='으로 바꿔 입력이 유지되도록 한다.
그리고 입력이 없을 때 ?로 바꾸는 if 문을 삭제한 후, 함수를 실행하면 아래 사진처럼 FLAG가 출력된다.

<Challenge 54 문제 다른 풀이> 반응형'Wargame > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge 17 (0) 2023.04.09 [Webhacking.kr] Challenge 14 (0) 2023.04.09 [Webhacking.kr] Challenge 39 (0) 2023.03.31 [Webhacking.kr] Challenge 16 (0) 2023.03.31 [Webhacking.kr] Challenge 26 (0) 2023.03.31