본문 바로가기
Wargame Write-Up/Webhacking.kr

[Webhacking.kr] (Web) 20번 풀이 (old-20)

by snwo 2020. 4. 2.

닉네임과 comment, captcha 가 있고, 2초의 시간제한이있다.


다입력한뒤, submit 해봤다.


너무 느리다고한다.


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

중간에 보면, html소스에 capcha_ 의 value 가 그대로 나온다.

id, cmt, captcha 의 값이 채워졌는지, captcha가 captcha_ 와 같은지 확인후 lv5.frm.submit() 해준다.

 

놀라운건, captcha값이 captcha_버튼의 value에 나타나있다는것이다.


2가지풀이법이있다.

 

첫번째는 콘솔에서 값을채운뒤 submit 하는것이다.

 

입력하고 엔터누르면 Tooslow 가 뜰 것이다.

뒤로가기 누른뒤 ,바로 오른쪽방향키로 명령어 소환해서 입력하면 풀린다.


두번째방법은 python 으로 소스를 짜서 푸는거다.

 

쿠키에 시간에따라변하는 st값이 있다.

먼저 요청을 보내고, captcha_ 버튼의 value 와 st 쿠키를 가져와

다음요청에 인자와 쿠키로 보내자.


[ python ]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import requests
 
 
cookies={'PHPSESSID':' 세션아이디 '}
data={'id':'snwo','cmt':'hello'}
 
index=r.text.find('captcha_')
data['captcha']=r.text[index+16:index+26]
temp_d=r.cookies.get_dict()
cookies['st']=temp_d['st']
 
re=requests.post(url,data=data,cookies=cookies)
print(re.text)

st 와 sessionid 를 똑같이 맞춰주고, captcha_ 버튼의 value 를 가져와

captcha 값을 채워준뒤, 요청한다. 그럼 풀린다.

 

st값을 맞춰주지않으면, time limit 에 걸린다