반응형

<html>
<head>
<title>Challenge 20</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
input { background:silver; color:black; font-size:9pt; }
</style>
</head>
<body>
<center><font size=2>time limit : 2 second</font></center>
<form name=lv5frm method=post>
<table border=0>
<tr><td>nickname</td><td><input type=text name=id size=10 maxlength=10></td></tr>
<tr><td>comment</td><td><input type=text name=cmt size=50 maxlength=50></td></tr>
<tr><td>captcha</td><td><input type=text name=captcha><input type=button name=captcha_ value="Jx2pH1b5FY" style="border:0;background=lightgreen"></td></tr>
<tr><td><input type=button value=Submit onclick=ck()></td><td><input type=reset value=reset></td></tr>
</table>
<script>
function ck(){
  if(lv5frm.id.value=="") { lv5frm.id.focus(); return; }
  if(lv5frm.cmt.value=="") { lv5frm.cmt.focus(); return; }
  if(lv5frm.captcha.value=="") { lv5frm.captcha.focus(); return; }
  if(lv5frm.captcha.value!=lv5frm.captcha_.value) { lv5frm.captcha.focus(); return; }
  lv5frm.submit();
}
</script>
</body>
</html>

 


function ck(){
  if(lv5frm.id.value=="") { lv5frm.id.focus(); return; }
  if(lv5frm.cmt.value=="") { lv5frm.cmt.focus(); return; }
  if(lv5frm.captcha.value=="") { lv5frm.captcha.focus(); return; }
  if(lv5frm.captcha.value!=lv5frm.captcha_.value) { lv5frm.captcha.focus(); return; }
  lv5frm.submit();
}

 

ck() 함수는 문제 페이지에서 입력할 수 있는 빈칸 3개에 대해 공백이면 focus가 간다.

 

그리고 captcha의 값이 잘 입력되었는지 비교하여 같을 경우에 submit() 함수를 실행한다.

 

하지만 captcha 코드는 서버에서 2초마다 계속 바꾼다.

 

그렇기에 수동으로 captcha 코드를 2초만에 입력하여 전송할 수는 없다.

 

그러므로 JS를 이용해서 자동으로 갚을 채우고 전송해야 하는데, 웹 프록시를 이용하기에도 2초는 매우 짧은 시간이다.

 

"javascript:" URI 스키마를 사용하면 JS 코드를 실행할 수 있는데, 아래의 내용을 URL 입력 창에 입력하면 된다,

 

javascript:lv5frm.id.value='a';lv5frm.cmt.value='a';lv5frm.captcha.value=lv5frm.captcha_.value;lv5frm.submit();

 

 

문제 페이지를 새로고침하고 2초 안에 입력해야 한다.

 

2초 안에 입력 안하면 위와 같이 너무 느리다고 한다.

 

 


풀이

 

javascript: URI 스키마를 이용하는 방법도 느려서 안될 수 있기에

(위의 내용대로 했을 때 복붙하면 URI 스키마가 지워져서 2초가 지나게 된다.)

 

개발자 도구 -> console 탭을 이용한다.

 

lv5frm.id.value='a';lv5frm.cmt.value='a';lv5frm.captcha.value=lv5frm.captcha_.value;lv5frm.submit();

 

위와 같이 console 탭에 미리 복붙을 해놓고, 새로고침한 뒤 바로 console 탭에 적힌 코드를 실행하면 된다.

 

반응형

'전쟁 > Webhacking.kr' 카테고리의 다른 글

[webhacking.kr] old-34  (0) 2022.07.13
[Webhacking.kr] old-23  (0) 2022.07.13
[Webhacking.kr] old-54  (0) 2022.07.13
[Webhacking.kr] old-17  (0) 2022.07.13
[Webhacking.kr] old-16  (0) 2022.07.13

+ Recent posts