풀이
webhacking.kr Level 9 문제풀이
Level 9 숫자 버튼이 1~3 까지 있고, 패스워드 입력 창이 보인다. 1번을 누르면 "Apple"이 보여지고, no값이 1이 된다. 2번은 "Banana" 이다. 3번은 "Secret" 이라고 나오면, 힌트들이 보여진다. 길이는 11자리이며, 컴럼에는 'id'와 'no' 가 있다고 나와있다. 일단 no에 값에 따라서 나오는 문자열들이 id값이라고 추측해볼 수 있다. 우리가 넣을 수 있는 input값은 no 파라미터이다. 즉, no파라미터를 조작하여 no=3의 id를 알아내면 될 것같다. 일단, "Apple", "Banana"가 id값이 맞는지 테스트해 보았다. 위와 같은 쿼리문으로 id값이 맞는지 확인해 보려고 했으나, (') 문자 필터링 되어 있었다. 그래서 필터링 되는 문자들을 몇개 찾아보니 '..
webhacking.kr Level 12 문제풀이
Level 12 javascript challenge 라고 뜬다. 소스코드를 살펴보자. 괴상한 숫자들이 들어있다. WorkTimeFun 부분을 크롬 개발자모드 콘솔에 넣어보자. fromCharCode 함수가 유니코드 문자값을 문자열로 바꿔주는 함수이다. 즉, 난독화 되어 있었던 코드였던 것이다. 이제 추출된 코드를 정리해서 보면 다음과 같다. var enco = ''; var enco2 = 126; var enco3 = 33; var ck = document.URL.substr(document.URL.indexOf('=')); for (i = 1; i < 122; i++) { enco = enco + String.fromCharCode(i, 0); } function enco_(x) { return en..
webhacking.kr Level 11 문제풀이
Level 11 $pat에 이상한 정규 표현식들이 들어있고, if문을 살펴보면 pat와 val값이 같으면 풀리는 것 같다. 먼저 php 정규포현식에 대해 알아보았다. 대괄호 안에 있는 패턴의 일부를 "캐릭터 클래스"라고 하는데, '캐릭터 클래스'에서 사용할 수 있는 메타 문자는 다음과 같다. 다음은 이스퀘이프 시퀀스에 대한 정규식이다, 위 내용들을 종합하여 문제의 정규식을 해석하면, 참고 "/[1-3][a-f]{5}_.\*223.52.120.172.*\tp\ta\ts\ts/" / : 구분기호[1-3] : 1부터 3까지 중 하나[a-f]{5}_ : a부터 f까지 중 하나의 문자를 5번 반복하는 문자를 찾음, 마지막에 '_'를 붙임 ( x{n} : 'x'를 n 번 반복 )\t : tab을 의미함. (url ..
webhacking.kr Level 7 문제풀이
※ 2018. 07. 30. 기준 Webhacking.kr Level 7문제는 문제가 풀리지 않는 상태임을 알립니다. (카더라통신: 현재 서버가 union 명령어를 쓸 수 없다고 합니다.) Level 7 'auth' 버튼을 누르니 "Access_Denied!" 경고창이 뜬다. 소스코드를 살펴보자.
webhacking.kr Level 5 문제풀이
Level 5 Login 버튼과 Join 버튼이 존재한다. 소스코드를 보자. 'Login' 버튼을 누르면 mem/login.php로 이동이 되고, 'Join'을 클릭하면 "Access_Denied" 경고창을 띄운다. 'Login' 버튼을 눌러보자. 로그인 창이 뜨길래 'test' 값을 둘다 넣어 login해보았다. admin으로 로그인해야 되는 것 같다. 그래서 admin으로 로그인 해봤다. 그래서 admin으로 로그인 해야 되나 싶어 SQL Injection을 했다. (이는 삽질이였다. 😢) 그래서 이것 저것 코드살펴보고 하다가 처음 화면에서 'Login' 버튼을 누르면 mem/login.php 로 이동되는 것을 보고 혹시 디렉토리 노출 취약점이 있나 싶어 접속해보았다. '혹시나' 가 '역시나'로 바뀌..
webhacking.kr Level 3 문제풀이
Level 3 네모로직 문제가 나왔다. 네모칸을 클릭하면 검정색으로 변하게 된다. 매우 쉬운 네모로직이므로 풀고 'gogo'버튼을 눌러 보았다. 이름 입력 받는 창이 나오게 되고 입력하고 'write'를 누르면, 내 아이피와 아이디, 그리고 answer값이 표시된다. 여기서 answer값은 소스코드를 보면 알 수 있다. 소스코드에서 일부 코드만 가져왔다. 코드를 살펴보면 onclick이 일어났을 때, 배경을 검정으로 바꾸고, kk._1.value의 값을 1로 셋팅한다. 이런식으로 각 칸마다 _1, _2, _3 식으로 _25 까지 코딩되어 있다. function go() { var answer=""; for(i=1;i