728x90
<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="AqqMlggwSw" 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>

임의의 id, cmt와 웹 페이지에 출력되는 captcha를 2초 안에 입력 후 전송해야한다.

id, cmt, captcha는 각각의 input 태그의 이름이다.

개발자 옵션의 콘솔 창에서 아래의 코드를 복붙하면 풀린다. id, cmt, captcha를 입력하고 전송하는 js 코드다.

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

콘솔 창 대신 python 코드로도 풀 수 있다.

get 방식의 요청을 보내 20번 문제의 웹 페이지에 접속한다.

해당 웹 페이지의 쿠키 값 중에 st라는 이름의 쿠키가 있다. 읽어서 쿠키에 저장하고 captcha도 읽어서 데이터에 저장 후 쿠키와 데이터를 보낸다. post 결과 문제가 풀렸음을 알 수 있다.

import requests

url="https://webhacking.kr/challenge/code-4/"
cookie={'PHPSESSID':'upkn70vc0nt0nhg3874pr0bn9n'}

r=requests.get(url,cookies=cookie)

cookie['st'] = r.headers['Set-Cookie'].split('=')[1]
idx=r.text.index("captcha_")+16
captcha=r.text[idx:idx+10]

data={'id':'a','cmt':'b'}
data['captcha']=captcha

r=requests.post(url,data=data,cookies=cookie)
print(r.text)
728x90

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

old-19  (0) 2023.02.22
old-18  (0) 2023.02.22
old-17  (0) 2023.02.22
old-16  (0) 2023.02.21
old-15  (0) 2023.02.21

+ Recent posts