9번 문제를 클릭하면 위와 같이 HTTP Authentication 창이 나타남
임의의 값 ("test/test")를 입력 후 로그인 버튼을 누르면 위와 같이 패킷이 전송 됨
* 여기까지 해보고 도저히 감이 안 잡혀서 구글링을 해봄
* 문제에서 요구하는건 "htaccess"를 사용하여 접근 방식을 설정했을 때 발생하는 취약점을 이용하라는 뜻
* htaccess 파일에 " <Limit GET POST> " 형식으로 제한을 걸면 다른 메소드를 검증하지 않음
* 따라서 "OPTIONS" 등을 이용하여 인증 우회 가능
전송되는 패킷을 일일이 프록시에서 "GET = > OPTIONS" 처럼 수동으로 변경해도 되지만 버프스위트에서는
"Match and Replace" 기능을 이용하여 자동화 가능
위와 같이 설정하면 자동으로 OPTIONS 메소드로 전송 됨
인증을 우회하면 위와 같은 페이지가 나타남
1번 페이지 = apple
2번 페이지 = banana
3번 페이지 = Secret, hint 등
존재하지는 4번 페이지 요청하면 그냥 "Password" 입력 창이 나타남
사용자가 조절할 수 있는 no 파라미터가 인젝션에 취약한지 알아보기 위해 "sleep(5)" 입력
실제로 브라우저에서 딜레이가 발생하기 때문에 인젝션 포인트라고 말할 수 있음
힌트를 기반으로 하여 id 컬럼 데이터의 첫 번째 글자가 0x61='a' 인지 확인
만약 조건이 참이면 no=3 페이지가 출력되고, 거짓이면 no=0 페이지가 출력됨
no=3 페이지가 출력된것으로 보아 id 첫 글자는 'a'가 맞음
* 참고로 비교연산자(=) 필터링 되어 "like"로 우회
* 공백 필터링 되어 그냥 공백 없이 페이로드 붙여씀
조건이 거짓인 경우 no=0 페이지 출력
정리해보면 조건이 참인 경우 "no=3" 페이지가 출력되면서 "Secret" 문자열이 출력되고,
거짓인 경우 "no=0" 페이지가 출력되면서 "Password"를 입력 받음
따라서 조건의 참/거짓을 판별할 근거로 "Secret" 문자열을 사용할 수 있음
힌트게 근거하여 id 컬럼의 길이를 보니 11글자가 맞음.
첨부한 스크립트 파일 실행 결과
문제 클리어
'Webhacking.kr' 카테고리의 다른 글
Webhacking.kr 11번 (0) | 2015.08.15 |
---|---|
Webhacking.kr 10번 (0) | 2015.08.15 |
Webhacking.kr 8번 (1) | 2015.08.15 |
Webhacking.kr 7번 (0) | 2015.08.15 |
Webhacking.kr 6번 (0) | 2015.08.15 |