Wargame/Webhacking.kr
<Webhacking.kr> old-20
지우친구 웅이
2021. 12. 2. 13:12
닉네임과 코멘트 그리고 captcha를 입력하게 되어있다.
time limit가 2초인 것으로 보아 2초안에 제출하라는 것 같다.
페이지 소스 코드를 살펴보면
<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="qV4268PPBp" 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>
ck() 함수를 살펴보면
모든 입력 칸이 비어있으면 안된다.
그리고 captcha는 captcha_의 값과 같아야만 한다.
위 행동을 2초안에 직접 입력하기는 굉장히 힘들다.
그래서 python의 selenium을 이용해 문제를 해결했다.
import requests
from selenium import webdriver
# 사용중인 크롬의 버전과 같은 버전의 chromedriver를 받아 python 코드의 위치와 같게했음
driver = webdriver.Chrome("./chromedriver")
driver.implicitly_wait(3)
driver.get("https://webhacking.kr/login.php")
# 로그인
driver.find_element_by_name('id').send_keys('아이디')
driver.find_element_by_name('pw').send_keys('비밀번호')
driver.find_element_by_class_name('submit').click()
driver.get("https://webhacking.kr/old.php")
driver.get("https://webhacking.kr/challenge/code-4/")
# nickname 입력
driver.find_element_by_name('id').send_keys('woong')
# comment 입력
driver.find_element_by_name('cmt').send_keys('hi')
# captcha_ 값 구하기
value = driver.find_element_by_name('captcha_').get_attribute('value')
# captcha 입력
driver.find_element_by_name('captcha').send_keys(value)
# submit 버튼 클릭
driver.find_element_by_xpath('/html/body/form/table/tbody/tr[4]/td[1]/input').click()
또 다른 방법으로
개발자 도구(F12)의 콘솔 창에
적어 놓고(줄 바꿈은 Shift + Enter)
새로고침 후 2초안에 콘솔 창에서 엔터를 누르는 것이다.