본문 바로가기

wargame/WEBHACKING.kr

[WEBHACKING.kr]20

20

자바스크립드 문제. 대충 어떤 게 있는지 확인하고 코드를 살펴보았다.
1


해석해보았다
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</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>code</td><td><input type=text name=hack><input type=button name=attackme value="xwhkfolfmf" <!--vlaue의 값은 새로고침할 때마다 바뀌었다-->
 style=border:0;background=lightgreen onmouseover=this.style.font=size=30 onmouseout=this.style.font=size=15></td></tr>
<tr><td><input type=button value="Submit" onclick=ck()></td><td><input type=reset></td></tr>
</table>
<script>
function ck()
{

if(lv5frm.id.value=="") { lv5frm.id.focus(); return; }
<!--nickname text에 입력된 값이 없다면 그 텍스트 칸을 focus하고 함수 종료-->
if(lv5frm.cmt.value=="") { lv5frm.cmt.focus(); return; }
<!--comment text에 입력된 값이 없다면 그 텍스트 칸을 focus하고 함수 종료-->
if(lv5frm.hack.value=="") { lv5frm.hack.focus(); return; }
<!--code text에 입력된 값이 없다면 그 텍스트 칸을 focus하고 함수 종료-->
if(lv5frm.hack.value!=lv5frm.attackme.value) { lv5frm.hack.focus(); return; }
<!--code text의 값과 옆에 코드 값이 다르다면 그 텍스트 칸을 focus하고 함수 종료-->

lv5frm.submit(); <!--위에서 return 되지 않았다면 form 제출-->

}
</script>

<br>

do not programming!<br>

this is javascript challenge

</body>
</html>

아래 코드에서 name이 attackme의 value값이 새로고침하거나 submit, reset할 때마다 값이 바뀌었다. 무슨 의미일지 고민하다가 time limit : 2와 결합시켜보니 2초 뒤면 value가 바뀐다고 추측할 수 있었다. 그래서 2초 안에 어떻게 nickname, comment 칸에 값을 넣고 올바른 code 값을 넣을지 고민해보았다.


첫번째 시도는 burp suite를 이용하였다.
아무 글자나 입력하고 submit을 입력하면 burp suite로는 아무것도 잡히지 않았다. 그렇다고 새로고침하면 기본적인 웹페이지 정보외에 뜨는 것도 없었다. 그래서 패스.


두번째 시도는 python을 이용한 방법이었다.
이전에 어떤 페이지에서 파이썬을 이용하여 웹에 정보를 보내는 것이 기억나서 검색해서 찾아보기로 하였다. 여러 군데에서 검색하여 코드를 완성할 수 있었는데 코드가 실행되지 않아서 포기하였다. 나중에 관련 내용이 필요하면 그 때 더욱 추가하여 알아보기로 하였다

import urllib.request
import requests
from bs4 import BeautifulSoup

req = urllib.request.Request("http://webhacking.kr/challenge/codeing/code4.html", "id=rudnfqkfk&pw=vmfpcpf".encode())
res = req.urlopen(req)

html = res.read()
soup =  BeautifulSoup(html)

code = soup.find('input', {'value' : 'attackme'})
value = {
    'id' : 'hi',
    'cmt' : 'hello',
    'hack' : code }
r = requests.post("http://webhacking.kr/challenge/codeing/code4.html", data = value)




세번째 시도는 그냥 타이밍 맞게 입력하는 방법이었다. 2초 내에 전부 입력할 수 없으니까 크롬 개발자도구를 이용하여 자바스크립트 코드를 삽입하기로 하였다. 새로고침하고 아래 코드를 실행시키니 성공하였다.

lv5frm.id.value = "hello";
lv5frm.cmt.value = "hi";
lv5frm.hack.value = lv5frm.attackme.value;
lv5frm.submit();

'wargame > WEBHACKING.kr' 카테고리의 다른 글

[WEBHACKING.kr]25  (0) 2019.05.21
[WEBHACKING.kr]18  (0) 2019.05.13
[WEBHACKING.kr]14  (0) 2019.05.06
[WEBHACKING.kr]12  (0) 2019.05.06
[WEBHACKING.kr]8 - fail  (0) 2019.05.06