ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Webhacking.kr> old-20
    Wargame/Webhacking.kr 2021. 12. 2. 13:12

    old-20

    닉네임과 코멘트 그리고 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초안에 콘솔 창에서 엔터를 누르는 것이다.

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

    <Webhacking.kr> old-22  (0) 2021.12.05
    <Webhacking.kr> old-21  (0) 2021.12.03
    <Webhacking.kr> old-19  (0) 2021.12.01
    <Webhacking.kr> old-18  (0) 2021.11.30
    <Webhacking.kr> old-17  (0) 2021.11.30
Designed by Tistory.