안녕하세요. 오늘은 webhacking 20번 문제를 풀어보겠습니다.

홈페이지로 들어가 webhacking 20번을 눌러주세요.

칸이 세개가 있고 그  밑에 문구가 있습니다.

프로그래밍을 하지 마라! 이것은 자바스크립트 문제이다. 라고 적혀있네요.

일단은 소스를 봅시다.

function 은 사용자 정의 함수입니다. 즉 기본적으로 제공되는 함수가 아닌 사용자 임의로 만들어진 함수란 뜻입니다. 뒤에 ck가 있는 걸로보아 임의로 만든 ck라는 함수를 호출하는 것 같습니다.

첫줄을 보시면 if(lv5frm.id.value=="") { lv5frm.id.focus(); return; } 라고 되어있네요.

lv5frm의 id 값이 비어있으면 id의 포커스를 맞추고 값을 리턴시킨다는군요. focus()라는 것은 커서위치를 맞춰주는 함수입니다. 즉 값이 반환이 되어도 바로 입력할 수 있도록 커서위치를 맞춰준다는 것이지요.

2번째와 3번째 줄도 똑같구요. 4번째 줄을 보시면

hack의 값과 attackme의 값이 다르면 hack값을 리턴시킨다는군요. 즉 두 값이 같아야 리턴이 안됩니다.

마지막으로 이 데이터들을 전송시키는 submit함수를 호출하고 종료합니다. 아무래도 문제해결을 위해선 ck함수를 실행시킬 필요가 있습니다.

정상적으로 ck함수를 실행시키기 위해선 id ,cmt ,hack에 값을 넣어야 하며 이중 hack의 값은 attackme랑 같아야 합니다.

그렇다면 본문으로 들어가 id와 cmt, hack와 attackme를 찾아봅시다.

개발자도구에 들어가 하나하나 살펴봅시다.

 nickname옆의 칸은 id

comment옆의 칸은 cmt

 code옆의 칸은 hack

 값이 cyfsrwutxu인 버튼은 attackme

마지막으로 누르면 ck함수를 호출하는 Submit버튼이 있네요.

자 그럼 이제 값을 대입하는 것만 남았네요. hack과 attackme의 값만 같으면 되고 나머지는 따로 조건이 없었으므로 그냥 아무거나 입력해봅시다.

전송버튼을 눌러봅시다.

 ???? 틀렸다는 문구와 함께 attackme의 값이 바껴져있습니다.

왜 이렇게 된걸까 하고 살펴보았더니 상단 중앙에 다음과 같은 문구가 있습니다.

시간 제한 : 2 라고 되어있네요. 왜 진작에 못봤을까요.

2라고 적혀있으니 2분 또는 2시간이거나 아니면 2초(...)

혹시 2분이 아닐까 해서 빠르게 적어서 전송을 눌렀습니다만 역시 실패했습니다.

그렇다면 역시 2초인 것 같습니다.(...) 사실 상 2초안에 데이터를 입력한다는 건 불가능합니다. attackme의 값이 매번 달라지는데다가 복사도 안되서 일일이 써야하는데 다른거 다 재껴놓고 attackme만 쓰는데도 2초이상 걸립니다. 그래서 이럴땐 꼼수를 써야하지요.

아까도 말씀했다시피 2초안에 내용을 다적기는 불가능합니다. 그렇다면 2초란 카운트가 시작되기전에 미리 다 적어놓아야 하지요. 일단 메모장을 열고 다음과 같이 적어봅시다.

 뜻은 다들 아실테니 생략하겠습니다. 다 적으셨으면 복사를 해줍시다.

그리고 개발자 도구의 콘솔에 붙여넣습니다.

그 다음이 중요합니다. F5를 눌러 문제를 새로고침한다음 바로 콘솔창에서 엔터를 눌러 붙여넣은 내용이 실행이 되도록 합니다. 성공적으로 되셨다면 아래와 같은 창이 뜹니다.

간단한 문제처럼 보였지만 통수 맞았군요.

네 이것으로 문제풀이를 마치겠습니다.

 

 

 

'Webhacking' 카테고리의 다른 글

webhacking - 18번 문제  (0) 2015.10.02
webhacking - 60번 문제  (0) 2015.09.25
webhacking - 42번 문제  (0) 2015.09.18
webhacking - 58번 문제  (0) 2015.09.18
webhacking - 61번 문제  (0) 2015.08.07
Posted by englishmath
,