Webhacking.kr 28번
·
Webhacking.kr
어떤 파일을 올려서 pw 값을 알아내야 하는 듯한 문제이다. 힌트는 ".htaccess" 파일이라고 한다. index.php 파일을 읽으면 "read me"가 출력된다. 얼핏 보면 읽은거 같지만 실제로는 Apache 데몬에서 php 소스 파일을 해석하고 브라우저에 출력하라고 해석된 부분만 출력하는 것이다. 아마 "index.php" 파일 주석이나 실행되지 않는 곳에 비밀번호가 있을 것이다. 이제 힌트로 제공되었던 ".htaccess" 파일에 대해 알아보자. 이 파일은 APACHE 웹 서버의 분산 설정 파일로, 디렉토리 별로 웹 서버 설정을 변경할 수 있다. - PHP_VALUE [옵션] [값] - 해당 웹 서버 옵션의 값을 변경 - php_value magic_quotes_gpc off - PHP_FLA..
Webhacking.kr 27번
·
Webhacking.kr
GET 메소드로 전송되는 "no" 파라미터 값에 필터링이 걸려있다. 필터링에 통과되면 쿼리에 대입되고 해당 쿼리가 실행된 결과가 $q 변수에 저장된다. 클리어 조건은 id 값이 "admin" 이면 된다. "no" 값을 '1'로 입력하면 guest 가 입력된다. "no" 값을 -1로 입력하면 아무런 결과도 반환되지 않을 것이다. 다음에는 or 를 이용하여 뒤에 조건을 주는데, 이전 사진을 보면 "guest"의 "no" 값이 '1' 인것을 알아냈다. 그렇다면 최소 "admin"의 "no" 값은 1 보다 클것이다. 그리고 주석을 입력하면 뒤의 괄호 ')'를 무시하여야 하는데 주의할 점은 주석 뒤에 공백이 있어야 한다.
Webhacking.kr 26번
·
Webhacking.kr
GET 파라미터로 전송되는 id 파라미터 값이 "admin" 이면 필터링에 걸려 "no"가 출력된다. 그런데 클리어 조건이 id 값이 "admin" 이여야 한다. 힌트는 바로 urldecode 부분에 있다. URL에서는 한글이나 특수문자 등을 처리하기 위해 입력한 문자를 인코딩 하게 된다. => ' '(공백) = %20 => # = %23 그러나 알파벳의 경우에는 평문이 그대로 들어가기 때문에 이럴 때는 HTML 인코딩을 사용해야 한다. 알파벳 'a'를 HTML 인코딩 하면 %61이 된다. 위 사진에서 보이는 문자열 모두 "admin"을 의미한다. 그러나, "%61dmi"n 을 입력할 시에는 필터링에 걸리면서 "no"가 출력되는데 그 이유는 인코딩된 문자열을 입력하는 순간 브라우저에서 자체적으로 한번 디..