본문 바로가기

suninatas.com/Challenge

suninatas(써니나타스) 7번 문제 풀이

안녕하세요. 정보보안 등대지기입니다.

 

오늘은 7번 문제를 풀어보도록 하겠습니다.

 

 

※ 정답만 보지 마시고 실습을 통해 문제를 직접 풀어보시는 것을 추천드립니다.

 

7번을 클릭하면 문제 페이지가 등장합니다.

문제 페이지

 

"Do U Like girls?"라고 적혀있는 폼과 아이유 사진과 밑으로 내리면 "YES" 버튼, 더 내리면 윤아의 사진이 등장합니다.

 

 

"YES"를 클릭해보니 너무 느리다는 문구가 등장합니다.

'YES' 버튼 클릭

 

 

이외 문제 페이지에서 얻을만한 힌트는 없다고 판단되어 소스코드를 보았다.

소스보기

 

 

소스보코드에서 위와 같은 힌트를 발견하였습니다.

 

해석하면,

keyCode 값이 '116' 이거나(||) '9'일 경우 'No!' 라는 메시지를 출력하고 false 값을 반환하거나,

Ctrl을 누르고(누른 상태), keyCode 값이 '78' 이거나 '82'일 경우 false 값을 반환한다.

 

keyCode 값에 대해 알아보기 위해 검색해보니 아래외 같은 keyCode 변환 값을 알 수 있다.

출처 (https://firejune.com/731/event.keyCode+%EB%B2%88%ED%98%B8%ED%91%9C#article-731)

 

 

keyCode 값을 문자로 변환하여 다시 해석하면,

F5(keyCode = 116)나 TAB(keyCode = 9)를 누를 경우 'No!' 메시지를 출력하고 false 값을 반환하거나,

Ctrl+N(keyCode = 78) 나 Ctrl+R(keyCode = 82)을 누를 경우 false 값을 반환한다.

 

 

또 다른 힌트는 '더 빠르게 더 빠르게' 라는 힌트가 주어졌다.

힌트

 

힌트들을 조합해보면 'YES' 버튼을 재빠르게 클릭한다면 문제가 해결될 것으로 예상됩니다.

 

이후 아무리 빠르게 버튼을 클릭해도 느리다는 문구 외에는 다른 반응은 볼 수 없었습니다.

하지만 이보다 더 빠르게 버튼을 누를 수 있는 방법으로 개발자 도구(F12)에서 Console을 이용한 전송입니다.

(Chrome 브라우저에서 해당 기능(Console)을 사용하였습니다.)

 

Console에서 frm.submit()을 반복적으로 빠르게 빠르게 전송(Enter)해주면 인증키가 등장하여 문제가 해결됩니다!

Console 기능
인증키 획득!

 

여기서 frm의 의미는 소스보기에서 body 내 form 태그에서 name의 값(frm)을 사용하였고,

Input 태그 내 'YES'의 값(value)을 갖고 있는 type의 값(submit)을 사용하였습니다.

 

 

7번 문제 풀이는 여기서 마치겠습니다.

보안에 관심 있는 분들이 손쉽게 이해하고 접근할 수 있도록 노력하겠습니다 :)

 

질문 또는 조언해주실 분은 아래 댓글 또는 메일로 남겨주세요.

 

cjh1503123@naver.com