공부/웹해킹 (Web hacking)

[Webhacking.kr | 웹해킹] old-20

eunjuu 2024. 4. 30. 15:04
728x90

📎 https://webhacking.kr/chall.php

 

Webhacking.kr

 

webhacking.kr


문제를 클릭하면 이런 창이 뜬다. "nickname"과 "comment"를 입력하고 captcha로 인증을 한 후 Submit하는 구조다.

그러나 상단을 확인해 보면 time limit : 2 second 즉, 2초안에 Submit 해야하기 때문에 직접 입력하는 것은 아닌 것 같고 코드를 보고 어떻게 해야할지 고민해보아야 할 것 같다.

 

개발자 도구를 통해 script 부분을 확인해보겠다.

 

이 코드는 JavaScript로 작성된 함수인데, 

1. `function ck() {`: `ck`라는 함수를 정의합니다.
2. `if(lv5frhttp://m.id.value=="") { lv5frhttp://m.id.focus(); return; }`: 만약 `lv5frm`의 `id` 필드가 비어있다면, 해당 필드에 포커스를 맞추고 함수를 종료합니다.
3. `if(lv5frhttp://m.cmt.value=="") { lv5frhttp://m.cmt.focus(); return; }`: 만약 `lv5frm`의 `cmt` 필드가 비어있다면, 해당 필드에 포커스를 맞추고 함수를 종료합니다.
4. `if(lv5frhttp://m.captcha.value=="") { lv5frhttp://m.captcha.focus(); return; }`: 만약 `lv5frm`의 `captcha` 필드가 비어있다면, 해당 필드에 포커스를 맞추고 함수를 종료합니다.
5. `if(lv5frhttp://m.captcha.value!=lv5frm.captcha_.value) { lv5frhttp://m.captcha.focus(); return; }`: 만약 `lv5frm`의 `captcha` 필드의 값이 `lv5frm`의 `captcha_` 필드의 값과 다르다면, 해당 필드에 포커스를 맞추고 함수를 종료합니다.
6. `lv5frm.submit();`: 위의 모든 조건을 통과한 경우에는 `lv5frm`을 서버로 제출합니다.

이 코드는 어떤 폼이나 입력 필드가 제출되기 전에 각 필드에 데이터가 있는지 확인하고, 필요한 경우 사용자에게 알리는 역할을 합니다.

 


 

nickname, comment, captcha 입력창을 공란으로 비워두면 안되고, captcha 입력창에는 주어진 문자를 입력하여 출력해야 한다.

그래서 nickname과 comment 입력창에는 임의의 값 "test"를 입력하고, captcha 입력칸에는 옆에 뜨는 문자를 입력하여 제출하게 한다.

 

lv5frm.id.value="test";
lv5frm.cmt.value="test";
lv5frm.captcha.value=lv5frm.captcha_.value;
lv5frm.submit();

 

페이지를 새로고침한 후 콘솔창에 2초 안에 위 코드를 입력하면 풀린다.

 

 

728x90