Webhacking

[Webhacking.kr] old-12번 풀이

aeeazip 2022. 12. 21. 03:36

링크로 들어가면 12번 문제를 확인할 수 있다.

문제 사진

 

문제를 파악하기 위해 소스코드를 확인해보았다.

 

 

 

 

 

 

소스코드


소스 코드

script 코드가 엄청 길다!!

또 스크립트 속의 코드를 자세히 보면 "처음부터 끝까지 이모티콘으로 작성" 되어 있다는 특징이 있었다.

이를 통해 스크립트 속 문장을 이모티콘으로 인코딩했음을 짐작할 수 있었다.

 

이모티콘으로 인코딩하는 것을 aaencode 방식으로 인코딩 했다고 말한다.

따라서 aaencode 방식으로 디코딩하여 암호화 하기 전 식을 알아내야 한다.

 

 

 

 

 

해결


aaencode 방식으로 디코딩 해서 암호화 하기 전의 식을 알아내면

디코딩한 결과

이런 결과가 나온다.

마지막 if문 조건이 맞다면 해당 url 주소로 이동하는 형식이므로 콘솔창으로 ck값을 확인하여

./ck값.php인 주소로 이동하면 문제가 풀림을 추측할 수 있다.

 

콘솔창을 통해 ck값이 '=youaregod~~~~~~~!' 임을 확인하였고

if 조건문이 참일때 실행되는 문장 속

location.href="./"+ck.replace("=","")+".php";

ck.replace(”=”,””) 함수에 따라 = 을 공백("")으로 변환하여

URL에 /youaregod~~~~~~~!.php를 추가하여 이동하면 문제가 풀린다.

 

 

javascript는 클라이언트 쪽에서 처리하는 언어이므로 사용자가 소스 코드 확인 및 수정 가능

해당 문제는 자바스크립트의 보안 취약점을 이용한 문제이다.