본문 바로가기

컴퓨터 개발

webhacking.kr [문제 20번] webhacking.kr 19번에 문제가 있다. 해당 문제는 잠시 보류해두고 20번 문제부터 풀어보겠다. 이제 해당 문제를 클릭해보자. 상단의 다음과 같은 메세지와 3개의 인풋박스가 나열되어 있다. 또한 힌트로 "do not programming!""this is javascript challenge" 주어져 있다. 자바스크립트 문제라고 명시되어있기 때문에 소스코드를 확인해보자. 눈여겨봐야할 부분 두 부분을 체크해놓았다. 해당 입력폼에 조건 4가지가 붙어 있고, 다음과 같은 조건이 성립되지 않으면 해당 부분을 포커싱하게 되어있다. 1. if(lv5frm.id.value=="") { lv5frm.id.focus(); return; } 해당 입력폼이 공백이면, 해당 입력폼에 포커스를 맞춘다. 2. if(lv.. 더보기
webhacking.kr [문제 18번] 세번째 라인의 마지막 주자인 18번 문제를 풀어보겠다. 해당 문제의 배점은 100point이다. 해당 문제에 접속해보자 문제에 접속하자 마자 해당 문제의 해결책이 SQL INJECTION이라는 힌트가 주어져 있고, 인젝션할 쿼리를 포함하는 페이지의 소스가 주어진다. 주저없이 해당 인덱스 페이지의 소스코드를 살펴보자. 해당 소스코드에서 눈에 띄는 점 두 부분이 있다. 첫번째, 특정한 문자열을 필터링 하는 부분이다. 조건문을 확인해보면, eregi(인자1, 인자2) 함수를 이용하여 특정한 문자열들을 필터링 하고 있다. 보고 확인 가능하지만 대략적으로 공백문자, '/', '&', 'union', 'select', 'from', '0x' 등의 문자열들을 필터링 하고 있다. 다음과 같은 문자열을 이용하여 sql .. 더보기
webhacking.kr [문제 17번] 17번 문제를 풀어보겠다. 해당 문제의 배점은 100point이다. 사실 풀이과정을 작성하면서 문제를 풀어보려고 했으나, 무의식중으로 해당 문제를 풀어버려서 이미 문제가 풀린 상태이다. 허나 도움받을 분들을 위해서 풀이를 작성하겠다. 해당 문제를 접속하게 되면 input box하나가 보인다. 혹시나 쿠키를 이용하나 해서 어떤 쿠키가 존재하는 지 확인하였다, 다른 쿠키정보는 존재하지 않았다. 그렇다면 소스코드를 확인해보겠다. 해당 스크립트를 확인하니 input box의 입력값이 unlock이란 변수의 값과 같으면 password를 출력하고 그렇지 않으면 틀린 메세지박스를 출력하고 있다는 것을 확인하였다. 결과적으로 unlock값을 알아내기 위해서는 다음과 같은 소스코드의 값을 알아내야 한다. 허나 연산이 .. 더보기
webhacking.kr [문제 16번] 오늘은 16번 문제의 풀이를 작성해보도록 하겠다. 해당 문제의 배점은 100point이다. 해당 문제를 클릭하자 16번 문제 페이지의 좌측 상단에 뚱이(별) 한마리가 자리 잡고 있다. 기계적으로 소스코드를 확인해보자. 해당 소스코드를 확인하면 바디태그에 onload와 onkeypress 메소드가 등록되어 있는 것을 확인할 수있다. onload : 바디가 로딩될 때 실행될 루틴이 저장되어있다, onkeypress : 바디 요소가 활성화 되어있을 때 키입력시 발생할 이벤트가 등록되어 있다. onkeypress에 등록되어 있는 함수를 확인해보자. 특정한 정수값에 따라 star요소(별)이 이동하는 것을 확인할 수 있다. (단, 크롬브라우저에서 해당 스크립트는 작동하지 않는다.) 여기서 특정한 정수값은 뭘 뜻할까.. 더보기
webhacking.kr [문제 15번] 15번 문제를 풀어보겠다. 해당 문제의 배점은 50point이다. 클릭해보자. 해당 메세지박스가 출력되며 바로 튕긴다. 그리고 바로 어떤 페이지가 보였다가 다시 돌아온다. 너무 빨라서 확인할 수 없다. 하지만 찰나의 순간에서 단축키를 이용하면 확인할 수 있다. 페이지 소스 보기의 해당 단축키를 확인하면, Ctrl+U이다. 해당 메세지 박스가 떳을 때 빠르게 단축키를 눌러보자. 다음과 같은 소스코드 페이지를 확인할 수 있다. 그렇다면 해당 문서에 출력되는 문자열 "password is off_script"를 확인할 수 있다. 너무 간단하지만 Auth들어가서 off_script를 입력해보자. 더보기
webhacking.kr [문제 14번] 문제 14번을 풀어보겠다. 해당 문제의 점수는 100point이다. 문제를 클릭하게 되면, 다음과 같은 입력창 하나가 보인다. 정보가 부족하니 먼저 소스코드를 확인해보자. 앞서봤던 입력 폼에 onclick메소드로 ck()라는 함수가 등록되어 있는 것으로 확인되었다. function ck() { var ul=document.URL; ul=ul.indexOf(".kr"); ul=ul*30; if(ul==pw.input_pwd.value) { alert("Password is "+ul*pw.input_pwd.value); } else { alert("Wrong"); } } 해당 소스코드를 분석해보자. ul에 해당 문서의 URL을 담는다. ul에 담긴 문자열(해당 문서의 URL)에서 ".kr"의 인덱스 값을 구.. 더보기
webhacking.kr [문제 13번] 3번째 라인으로 넘어가서 문제 13번을 풀어보겠다. 해당 문제의 배점은 1000point이며 지금까지 나온 문제 중 제일 높은 배점을 갖고있다. 클릭해보자. SQL INJECTION기법으로 푸는 것으로 예상되며 힌트로 select flag from prob13password라고 주어져 있다. 그렇다면 시험삼아 인젝션을 시도해보자. 몇가지 문자들이 필터링 되어있는 것 같다. 다사다난한 삽질(?)이 예상된다. 임의로 여러가지를 테스트해보자. 1) 0을 입력시 아무런 반응이없다. 2) 1을 입력시 3) 2를 입력시 4) 2이상을 입력시 해당 결과를 토대로 예상해보면 result가 1일때는 참 0일때는 거짓으로 나온다고 생각된다. 해당 가설을 검증해보자. no=2 or 1 (참) 이라는 쿼리를 보내서 해당 결과.. 더보기
webhacking.kr [문제 12번] 웹해킹 12번 문제를 풀어보겠다. 포스팅하기전 테스트할 겸 혼자서 한번 풀어보았는데 미리 풀려버려서, 해당 문제가 풀려진 상태지만 정보도 정리할겸 다시 한번 풀어보겠다. 점수는 250point이다. javascript challenge라고 작성되어 있으며, 문자열을 확인해보면 해당 문제는 자바스크립트를 이용하여 푸는 문제인 것 같다. 이렇게해서는 정보가 부족하니 소스코드를 확인해보자. 해당 소스코드를 확인해보니, 여러가지 숫자가 나열된 것을 확인할 수 있다. 이것이 아마 비밀정보(?)로 예상된다. 소스코드를 한번 구체적으로 해석해보자. String.fromCharCode(인자1,인자2, ...) eval(인자1) 해당 정보를 토대로 해석해보면, 정수값의 나열로이뤄진 부분이 특정 문자열을 반환할 것이고, .. 더보기