상세 컨텐츠

본문 제목

[picoCTF 2022/Web Exploitation] Local Authority

해킹공부/CTF

by 밍구21 2022. 3. 22. 13:20

본문

문제는 website를 눌러 이동한 웹 페이지에서 flag를 찾아 입력하면 된다.

 

 

웹페이지에 접속한 뒤 F12로 개발자모드를 켠 뒤 소스코드를 훑어보았다.

음 힌트를 얻을 수 있는 건 없다.

 

아무 비밀번호나 쳐보았다

 

결과 로그인 실패. 하지만 여기서 중요한 단서를 얻을 수 있었다.

 

 

사실 여기는 중요한 부분이 ㅇㅏ니다 ^^ PASS해도 된다.

중간에 내가 <------------- 표시 해놓은 코드부터 보자.

window.username과 window.password에는 내가 입력한 아이디, 비밀번호가 들어있다.

이것들이 아랫줄에서 filter() 함수를 거쳐 각각 usernameFilterPassed, passwordFilterPassed에 들어간다.

 

filter 함수는 위에서 정의된 함수인데, 코드 내용을 보면 입력된 문자열이 charCodeAt()함수를 거쳐 cc에 저장되고, cc가 if문을 통과하면 filterPassed가 true로 반환된다. 

 

charCodeAt()은 입력된 문자열을 유니코드로 변환시키는 함수이다. if문에서 cc들의 범위를 정한 건 아이디, 비밀번호를 입력할 때 있던 Only letters and numbers allowed 기준을 지켰나 보기 위함이었다.

48~57은 0~9

65~90은 A~Z

97~122는 a~z이다.

 

아이디, 비밀번호를 문자와 숫자만 써서 입력해서 filterPassed 됐다면 checkPassword()함수로 웹사이트가 요구한 아이디, 비밀번호가 맞는지 확인한다. 맞다면 로그인, 아니면 로그인 실패이다.

 

 

찐 중요한 부분

웹사이트가 요구한 아이디, 비밀번호도 알 수 있는 부분이다.

js파일checkPassword() 함수 내에 정의되어 있었기 때문이다.

 

해당 아이디로 로그인을 해보았다.

 

^^!!

 

당장... 입력

힙힙 호rrrrㅔ이!~!

관련글 더보기