Iriton's log

[Dreamhack/Wargame]Lv.1 Carve party write-up 본문

WebHacking/WarGame

[Dreamhack/Wargame]Lv.1 Carve party write-up

Iriton 2023. 3. 30. 10:47

 

문제 파일을 다운로드 하면 html 파일이 있다.

vscode로 열어도 되고 메모장으로 열어도 되는데

난 그냥 메모장으로 열었다.

 

 

문제를 풀다 보니 두 가지의 풀이법이 있어서 두 가지 다 작성하려고 한다.

 

 

1. 코드 변환 (While문)

 

 

메모장을 열면 엄청 긴 코드가 보이지만, 이 중에서 필요한 건 클릭할 때마다 카운트 되게 하는 함수이다.

10,000번 클릭할 수 없으니 코드를 수정해 줘야 하기 때문이다.

해당 코드는 아래와 같다.

코드를 대충 읽고

'어 그럼 카운트를 1씩 증가하지 말고 9999번씩 증가 시키면 되겠네'

라는 생각을 했다.

 

 

 

counter += 9999로 바꾼 뒤 실행하면

flag가 암호화 되어서 출력된다.

 

 

 

그럼 반복문을 통해서 내부적으로 매크로를 돌려야 할 것이라 생각했다.

원래 코드에 while문을 한 줄만 추가하면 한 번의 클릭으로 counter가 10000이 될 때까지 반복할 수 있다.

더보기
$(function() {
  $('#jack-target').click(function () {
    while(counter<=10000){
		counter += 1;
		if (counter <= 10000 && counter % 100 == 0) {
		  for (var i = 0; i < pumpkin.length; i++) {
			pumpkin[i] ^= pie;
			pie = ((pie ^ 0xff) + (i * 10)) & 0xff;
		  }
		}
	}
    make();
  });
});

 

 

* while(counter<=10000)에서 =을 빼면 호박이 웃기만 하고 flag를 띄워주지 않는다. 

 

드디어 암호화 되지 않은 flag 값을 얻을 수 있었다.

호박이 웃지 않는 이유는 궁금했지만 별로 상관 없어서 skip

 

 

 

2. Console 창 활용

크롬 개발자모드 Console창에서 반복문을 수행해도 풀이가 가능할 것이라 생각했다.

 

 

반복을 수행할 변수를 선언한 후 click()함수를 반복하게 만들면 된다.

(1번 방법에서는 <=10000을 했어야 했는데 여기선 <10000으로 해도 되는 이유를 잘 모르겠다...)

아무튼 해결!

'WebHacking > WarGame' 카테고리의 다른 글

[Dreamhack/Wargame] Lv.1 file-download-1  (0) 2023.04.04
[Dreamhack/Wargame] Lv.1 devtools-sources  (0) 2023.03.30
[Webhacking.kr] old-20 write-up  (0) 2023.03.30
[Webhacking.kr] old-17 write-up  (0) 2023.03.29
[Webhacking.kr] old-14 write-up  (0) 2023.03.28
Comments