[WARGAME][webhacking.kr] old-20

jckim22·2022년 11월 17일
0

[WEBHACKING] STUDY (WARGAME)

목록 보기
80/114

먼저 문제를 관찰했다.

아래는 웹페이지였고

아래는 쿠키였다.
쿠키에 st가 추가되어서 이게 키 같았다.

아래는 페이지 소스이다.


<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="m0XWvKYORA" 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>

대충 해석하면 칸들이 비어있지 못하게 하는 것이었다.
그리고 captcha의 value가 같은 지 확인한다.

아래처럼 정상적으로 입력해보았는데

아래와 같은 응답이 왔다.
Too Slow.. 뭐가 느리다는건지 감이 안잡혔지만 메인페이지에서 limit time이 2초라고 하는걸 보면 그 안에 제출해야하는 건가 라고 생각했다.

그래서 아까 키라고 생각했던 쿠키를 봤고 얼핏 봤을 때 시간으로 만든 쿠키 같았다.
아니나 다를까 새로고침할 때 마다 초단위로 쿠키가 증가했다.

그래서 아래와 같이 넉넉하게 쿠키 시간을 잡고 다시 제출했는데

치트를 쓰지 말라는 응답이 왔다.
이게 뭔지 이 때는 살짝 헷갈려서 일단 사람이 할 수 없는 일임을 알았다.


그래서 프로그램을 돌리려고 파이썬 코드를 아래처럼 짰다.

위 코드는 st쿠키는 건들지 않고 계속적으로 요청을 보내면 어떻게 될까 궁금해서 해보았다.

허나 아래처럼 Too Slow만 돌아올 뿐이었다.

이때 딱 감이 잡혔는데 저 st가 생성되고 저 st의 시간보다 빠르면 안되고 2초 늦어도 안되는 거라는걸 눈치챘다.

그래서 내가 실행한 익스플로잇은 이러하다.

아래처럼 코드를 짰는데 시간 싸움이었다.
코드를 미리 입력해놓고 새로고침한 st보다 넉넉하게 30초 뒤 정도로 한뒤 반복이 끝나지 않게 5000개 정도 반복으로 해놓고 캡차 문자만 바꿨다.
그리고 30초 뒤 적절한 시간이 왔을 때 2초 안에 제출한게 되어서 성공할 것이라고 생각했다.

아래처럼 반복문을 돌리고 지켜보았는데
적절한 시간이 되자 solve에 성공한 것을 볼 수 있었다.

다 풀고 다른 사람의 풀이도 궁금해서 보았는데 스크립트 코드를 미리 복사하고 콘솔로 빠르게 실행하는 방법도 있더라

profile
개발/보안

0개의 댓글