본문 바로가기
CTF/webhacking.kr

[CTF] webhacking.kr 12번 Write-Up

by spareone 2022. 10. 14.

webhacking.kr 12번 문제풀이 Write Up 입니다.

[그림 1] Level 12 페이지

javascript challenge라고 합니다.

F12를 눌러 script를 확인해봅니다.

[그림 2] Level 12 소스코드

하... 짜증이 조금 날 것 같습니다.

짜증은 문제 틀렸을 때 내기로 하고 script를 살펴봅니다. 아마 난독화 되어 있는 script인 것 같습니다.

 

이렇게 난독화되어 있는 것을 검색해 보았습니다.

일본 이모티콘 난독화 이렇게 검색을 했는데, aaencode / aadecode를 발견했습니다.

 

https://utf-8.jp/public/aaencode.html

 

aaencode - Encode any JavaScript program to Japanese style emoticons (^_^)

aaencode demo aaencode - Encode any JavaScript program to Japanese style emoticons (^_^) Enter JavaScript source: alert("Hello, JavaScript")

utf-8.jp

https://cat-in-136.github.io/2010/12/aadecode-decode-encoded-as-aaencode.html

 

aadecode - Decode encoded-as-aaencode JavaScript program. ['_']

aadecode - Decode encoded-as-aaencode JavaScript program. (゚Д゚) ['_'] Enter ...

cat-in-136.github.io

위 링크가 난독화, 아래 링크가 난독화 해제 툴입니다.

난독화를 해제할 것이기 때문에 아래 링크로 들어갑니다.

[그림 3] aadecode 난독화 해제 페이지

위 텍스트박스에 해당 script를 붙여넣어야 합니다.

[그림 4] script를 복사하는 모습

script 복사할 때 이렇게 복사해야 합니다.

더블클릭 해서 긁으면 완전하게 복사가 안 됩니다. 이거 때문에 한참 해멨습니다.

[그림 5] aadecode로 난독화를 해제한 모습

난독화 해제가 되었습니다.

var enco='';
var enco2=126;
var enco3=33;
var ck=document.URL.substr(document.URL.indexOf('='));
for(i=1;i<122;i++){
  enco=enco+String.fromCharCode(i,0);
}
function enco_(x){
  return enco.charCodeAt(x);
}
if(ck=="="+String.fromCharCode(enco_(240))+String.fromCharCode(enco_(220))+String.fromCharCode(enco_(232))+String.fromCharCode(enco_(192))+String.fromCharCode(enco_(226))+String.fromCharCode(enco_(200))+String.fromCharCode(enco_(204))+String.fromCharCode(enco_(222-2))+String.fromCharCode(enco_(198))+"~~~~~~"+String.fromCharCode(enco2)+String.fromCharCode(enco3)){
  location.href="./"+ck.replace("=","")+".php";
}

if문 조건이 좀 긴데, 특정 문자열이 들어오면 문제가 해결되나 봅니다.

ck와 비교를 하는데, ck는 URL에서 '=' 문자를 기준으로 받아오는 것 같습니다.

[그림 6] console에서 script를 적용한 모습

enco_() 함수를 돌려야 문자열을 알 수 있기 때문에 console에 script를 적용시킵니다.

[그림 7] if문을 만족하는 문자열을 알아낸 모습

if문 안에 있는 조건을 긁어와 실행시켰더니 이런 메시지가 나왔습니다.

[그림 8] URL에 해당 문자열을 입력한 모습

=를 기준으로 문자열을 가져오니 GET 방식으로 값 전송하듯이 작성하면 될 것 같습니다.

실제로 값을 전송하기 위해 작성하는 게 아니니까 변수 이름은 아무거나 해도 됩니다. 

[그림 9, 10] 문제 해결 완료 메시지

조건 만족에 성공하면 문제가 정답처리 됩니다.

'CTF > webhacking.kr' 카테고리의 다른 글

[CTF] webhacking.kr 15번 Write-Up  (0) 2022.10.14
[CTF] webhacking.kr 14번 Write-Up  (0) 2022.10.14
[CTF] webhacking.kr 11번 Write-Up  (0) 2022.10.14
[CTF] webhacking.kr 10번 Write-Up  (0) 2022.10.14
[CTF] webhacking.kr 8번 Write-Up  (0) 2022.10.14

댓글