반응형
문제에 처음 들어가면 별 3개가 보인다.
키보드의 다양한 키들을 눌러보면 위와 같이 여러 개의 별들이 찍힌다. 이제 소스코드 분석을 해보자!
<html>
<head>
<title>Challenge 16</title>
<body bgcolor=black onload=kk(1,1) onkeypress=mv(event.keyCode)>
<font color=silver id=c></font>
<font color=yellow size=100 style=position:relative id=star>*</font>
<script>
document.body.innerHTML+="<font color=yellow id=aa style=position:relative;left:0;top:0>*</font>";
function mv(cd){
kk(star.style.left-50,star.style.top-50);
if(cd==100) star.style.left=parseInt(star.style.left+0,10)+50+"px";
if(cd==97) star.style.left=parseInt(star.style.left+0,10)-50+"px";
if(cd==119) star.style.top=parseInt(star.style.top+0,10)-50+"px";
if(cd==115) star.style.top=parseInt(star.style.top+0,10)+50+"px";
if(cd==124) location.href=String.fromCharCode(cd)+".php"; // do it!
}
function kk(x,y){
rndc=Math.floor(Math.random()*9000000);
document.body.innerHTML+="<font color=#"+rndc+" id=aa style=position:relative;left:"+x+";top:"+y+" onmouseover=this.innerHTML=''>*</font>";
}
</script>
</body>
</html>
body 부분에서 onkeypress로, 키를 누를 때마다 mv 함수를 호출함을 알려주고 있다.
function mv()를 해석해보면, kk()는 그냥 별을 그려주는 함수정도인 것 같다.
그리고 cd가 100, 97, 119, 115일 때, 별의 위치가 바뀌고, 124일 때 정답 페이지(.php)로 넘어가게 된다. 하지만 키보드 입력은 숫자가 아니라 영문자를 통해 입력된다. 때문에 해당 숫자가 의미하는 것은 아스키코드 기준일 것으로 예상된다.
아스키코드표를 확인해보면,
100 == d,
97 == a,
119 == w,
115 == s,
124 == | (파이프)
를 의미한다.
문제 페이지로 돌아가서 |(파이프)를 입력하면 정답처리가 된다!
반응형
'웹 해킹(WebHacking) > CTF(webhacking.kr)' 카테고리의 다른 글
Challenge(old) - Challenge 20번 문제풀이 (0) | 2021.10.06 |
---|---|
Challenge(old) - Challenge 24번 문제풀이 (0) | 2021.09.29 |
Challenge(old) - Challenge 1번 문제풀이 (0) | 2021.09.29 |
Challenge(old) - Challenge 26번 문제풀이 (0) | 2020.11.27 |
Challenge(old) - Challenge 34번 문제풀이 (0) | 2020.10.04 |
댓글