링크로 들어가면 12번 문제를 확인할 수 있다.
문제를 파악하기 위해 소스코드를 확인해보았다.
소스코드
script 코드가 엄청 길다!!
또 스크립트 속의 코드를 자세히 보면 "처음부터 끝까지 이모티콘으로 작성" 되어 있다는 특징이 있었다.
이를 통해 스크립트 속 문장을 이모티콘으로 인코딩했음을 짐작할 수 있었다.
이모티콘으로 인코딩하는 것을 aaencode 방식으로 인코딩 했다고 말한다.
따라서 aaencode 방식으로 디코딩하여 암호화 하기 전 식을 알아내야 한다.
해결
aaencode 방식으로 디코딩 해서 암호화 하기 전의 식을 알아내면
이런 결과가 나온다.
마지막 if문 조건이 맞다면 해당 url 주소로 이동하는 형식이므로 콘솔창으로 ck값을 확인하여
./ck값.php인 주소로 이동하면 문제가 풀림을 추측할 수 있다.
콘솔창을 통해 ck값이 '=youaregod~~~~~~~!' 임을 확인하였고
if 조건문이 참일때 실행되는 문장 속
location.href="./"+ck.replace("=","")+".php";
ck.replace(”=”,””) 함수에 따라 = 을 공백("")으로 변환하여
URL에 /youaregod~~~~~~~!.php를 추가하여 이동하면 문제가 풀린다.
javascript는 클라이언트 쪽에서 처리하는 언어이므로 사용자가 소스 코드 확인 및 수정 가능
해당 문제는 자바스크립트의 보안 취약점을 이용한 문제이다.
'Webhacking' 카테고리의 다른 글
[Webhacking.kr] old-35번 풀이 (0) | 2022.12.22 |
---|---|
[Webhacking.kr] old-14번 풀이 (0) | 2022.12.22 |
[Webhacking.kr] old-19번 풀이 (0) | 2022.12.21 |
[Webhacking.kr] old-24번 풀이 (0) | 2022.12.21 |
[Webhacking.kr] old-1번 풀이 (0) | 2022.12.21 |