webhacking.kr 19번에 문제가 있다.
해당 문제는 잠시 보류해두고
20번 문제부터 풀어보겠다.
이제 해당 문제를 클릭해보자.
상단의 다음과 같은 메세지와
3개의 인풋박스가 나열되어 있다.
또한 힌트로
"do not programming!"
"this is javascript challenge"
주어져 있다.
자바스크립트 문제라고 명시되어있기 때문에 소스코드를 확인해보자.
눈여겨봐야할 부분 두 부분을 체크해놓았다.
해당 입력폼에 조건 4가지가 붙어 있고,
다음과 같은 조건이 성립되지 않으면
해당 부분을 포커싱하게 되어있다.
1. if(lv5frm.id.value=="") { lv5frm.id.focus(); return; }
해당 입력폼이 공백이면, 해당 입력폼에 포커스를 맞춘다.
2. if(lv5frm.cmt.value=="") { lv5frm.cmt.focus(); return; }
해당 입력폼이 공백이면, 해당 입력폼에 포커스를 맞춘다.
3. if(lv5frm.hack.value=="") { lv5frm.hack.focus(); return; }
해당 입력폼이 공백이면, 해당 입력폼에 포커스를 맞춘다.
4. if(lv5frm.hack.value!=lv5frm.attackme.value) { lv5frm.hack.focus(); return; }
다음은 문제풀이의 핵심이 되는 코드인데,
lv5frm.attackme.value의 값과 lv5frm.hack.value의 값이 동일하지 않으면
해당 입력폼에 포커스를 맞추는 코드이다.
이를 우회하기 위해서는
lv5frm.attackme.value와 lv5frm.hack.value가 동일해야한다.
한번 해당 조건을 만족하게끔 입력값을 제시해보겠다.
해당 폼들을 조건에 맞추어
submit할 경우에
다음과 같은 메세지가 떴다.
해당 조건을 모두 우회하였는데도 이러한 결과가 빚는다니
다소 당황스러웠지만
아까 쓰지않은 힌트가 한가지 있다.
시간제한 :
2 라는 것이다.
그렇다
해당 문제에는 제한시간이 걸려있는 것으로 예상된다.
그렇기 때문에 2가 2분을 뜻하진 않고 2초정도를 뜻할텐데,
2초안에는 사람손으로 풀 수가 없다.
만능도구 크롬브라우저의 웹 개발자 도구를 사용하여 풀어보겠다.
다음과 같은 자바스크립트를
개발자 도구의 콘솔(console)에 입력해주면 되는 것이다.
간단하게 설명을 하면
lv5frm.id.value 변수 값에 "o"라는 문자열을 대입한 후
lv5frm.cmt.value 변수 값에 "o"라는 문자열을 대입한다.
그후
lv5frm.hack.value의 값에 lv5frm.attackme.value값을 대입한다.
결과적으로 lv5frm.submit()함수를 통해 해당 폼의 데이터들을 제출한다.
직접적으로 공격을 실행해보자.
해당 스크립트를 입력하고 엔터키를 입력한다.
문제 풀이 완료.
'IT > 웹 해킹(Web Hacking)' 카테고리의 다른 글
webhacking.kr [문제 22번] (0) | 2018.03.30 |
---|---|
webhacking.kr [문제 21번] (6) | 2018.03.25 |
webhacking.kr [문제 18번] (0) | 2018.03.13 |
webhacking.kr [문제 17번] (0) | 2018.03.13 |
webhacking.kr [문제 16번] (0) | 2018.03.12 |