Webhacking.kr 20번 문제 풀이
Webhacking.kr 20번 문제 풀이
20번 문제에 접속하면 위와 같은 화면이 출력된다.
문제를 보면 nickname,comment 폼에는 우리가 임의의 값을 입력하면 되는것 같은데 code 폼에서는 바로 우측에
무작위로 배치된 알파벳을 입력하고 submit 해야하는 모양이다.
이 무작위로 배치된 알파벳은 새로고침시 계속 변경되기 때문에 복사를 해도 의미가 없다.
그리고 우측 상단에 "time limit : 2" 라는 문구가 있는데 이것의 의미는 2초 이내로 해당 문제의 폼에 적절한 값을 넣어
submit 하라는 의미인것 같다. 그리고 해당 코드가 실제로 구현되어 동작되고 있는 것 같다.
정리 하자면 2초안에 nickname, comment 폼에는 임의의 값을 , code 부분에는 무작위로 생성된 알파벳 값을 입력하고 submit
하면 문제를 공략하게 될것이다. 하지만 우리가 nickname과 comment 폼에 값을 채우고 무작위로 배치된 알파벳을 code 폼에
입력하고 submit을 하기에 2초라는 시간은 부족하다.
힌트를 얻기 위해 우선 페이지 소스를 확인해보자
소스를 보면 위의 자바스크립트 코드가 존재한다. 코드를 해석해보자
function ck() #ck 함수 선언
{
if(lv5frm.id.value=="") { lv5frm.id.focus(); return; } #id(nickname폼)의 값이 빈값이면 id폼으로 커서가 이동
if(lv5frm.cmt.value=="") { lv5frm.cmt.focus(); return; } #cmd(comment 폼)의 값이 빈값이면 comment폼으로 커서가 이동
if(lv5frm.hack.value=="") { lv5frm.hack.focus(); return; } #hack(code폼)의 값이 빈값이면 code 폼으로 커서가 이동
if(lv5frm.hack.value!=lv5frm.attackme.value) { lv5frm.hack.focus(); return; } #hack(code폼)의 값과 attacke me(무작위 알파벳) 의 값이 같지 않으면 code 폼으로 커서가 이동
lv5frm.submit(); #submit
}
해당코드를 해석한 내용을 참조하면 단순히 각 폼에 입력된 값이 빈값인지, code폼에 입력한값과 무작위 알파벳의 값이 같은지를
확인하는 코드인것 같다.
하지만 <script> 태그는 클라이언트측에서 변조가 가능하기 때문에 위의 코드를 변조해 문제 공략에 사용해보자
코드를 위와 같이 변조했다. nickname,comment 폼에 바로 임의의 값을 저장, code 폼에 무작위 알파벳을 저장하게끔
변조 하였다. 위의 코드를 복사해 새로고침(F5)를 눌러 time limit를 초기화 시키고 크롬의 콘솔 기능을 이용해 변조 코드를
전달하면 어떻게 될까?
콘솔 기능을 통해 변조 코드 전달.
성공적으로 2초이내로 문제에서 원하는 입력 값을 모두 전달하여 문제 공략에 성공했다.
200 Point 획득 :D
'Web Hacking > Web Hacking.kr' 카테고리의 다른 글
Webhacking.kr 23번 문제 풀이 (0) | 2017.07.10 |
---|---|
Webhacking.kr 21번 문제 풀이 (2) | 2017.07.10 |
Webhacking.kr 18번 문제 풀이 (0) | 2017.07.06 |
Webhacking.kr 17번 문제 풀이 (0) | 2017.07.06 |
Webhacking.kr 16번 문제 풀이 (0) | 2017.07.06 |