전체 글
-
[Webhacking.kr - 문제풀이 18번]Webhacking.kr 문제 풀이 2021. 4. 12. 20:14
이번 문제는 SQL injection 문제이며, view-source가 나와있으니 확인해보자. form 태그로부터 넘어오는 no 값을 get 방식으로 받았을 때, db가 연결되고 preg_match() 함수를 통해 필터링하여 위와 같은 문자열과 일치하면 코드가 종료된다. 그게 아니라면 result 변수에는 chall18로 부터 id가 guest이고, no가 입력값인 id로 배열을 추출하여 초기화된다. 이후 위에서 얻은 id가 guest 라면 "hi guest" 가 출력될 것이고, admin이라면 문제가 해결될 것이다. 문제에서는 admin의 no값이 2라고 알려줬지만, 앞에 id가 "guest"라는 조건과 함께 and라고 나와있기에 2를 입력하여도 소용없다는 것을 알 수 있다. 따라서, 논리합을 이용했을..
-
[Webhacking.kr - 문제풀이 14번]Webhacking.kr 문제 풀이 2021. 4. 12. 19:28
문제의 메인 페이지 화면은 위와 같고, 페이지 소스는 다음과 같다. button 타입의 input 태그를 눌렀을 때 ck() 함수가 호출 되는 걸 확인할 수 있고, ck() 함수의 조건문에서 변수 ul이라는 값이 name이 pw인 form태그 내 input_pwd를 가진 input 태그의 value값과 같으면 문제를 해결할 수 있다. ul이라는 변수는 메인 페이지의 URL로 초기화되고 ".kr" 로 시작하는 인덱스를 얻어와 그 인덱스에 30을 곱한 값이 최종적인 ul 값이 된다. 따라서 "https://webhacking.kr/challenge/js-1/?291600" 를 보면 '.kr' 로 시작하는 인덱스 값은 18이므로 ul 은 540을 얻게 된다.
-
[Webhacking.kr - 문제풀이 6번]Webhacking.kr 문제 풀이 2021. 4. 12. 19:14
ID는 guest, PW는 123qwe라는 계정이 문제 화면에 나와있고, 자세한 정보는 viwe-source에 있는 것 같다. 다음은 view-source에 대한 정보이다. 쿠키 값이 존재하지 않는다면 $var_id 변수와 $var_pw 변수에 각각 "admin"과 "123qwe"를 저장한 후 반복문으로 20번의 base64 인코딩 후 아이디와 패스워드에 대한 변수가 특수문자로 치환되는 것을 확인할 수가 있다. 이후 치환된 변수에 저장된 값이 user와 password 쿠키에 저장된다. user, password 쿠키에 저장된 값이 $decode_id와 $decode_pw 변수에 저장되고, 다시 특수문자에서 숫자로 치환된 후 20번 base64 디코딩 과정을 거치게 된다. 따라서, admin과 nimba..
-
[Webhacking.kr - 문제풀이 17번]Webhacking.kr 문제 풀이 2021. 4. 12. 13:46
위의 페이지에 대한 소스를 확인해보면 다음과 같다. button 타입의 input 태그를 눌렀을 때, sub() 함수가 호출이 되는 걸 확인할 수 있고, sub() 함수 내부에는 name이 login이면서, pw의 value값이 unlock값과 같다면 문제를 쉽게 해결할 수가 있다. 따라서, 크롬 개발자 도구 Console창을 이용해 unlock의 값을 확인해보자. 7809297.1 이라는 값을 얻을 수가 있었고, 이 값을 input 태그에 입력한다면 URL에 unlock을 10으로 나눈 몫인 "?780929.71" 이 붙게되며 문제는 해결된다.