이번 문제는 접속 시 내 idx값이 출력되고 있다.
소스코드를 보면
$_COOKIE['PHPSESSID']값이 숫자로 되어 있지 않을 시 해당 코드가 종료되고 숫자일시 mode파라미터값이 auth면 $_SESSION['idx'].txt파일을 불러와 내 $_SESSION ['idx'] 값이랑 같을 시 문제가 풀린다.
하지만 아래 코드를 보면 로컬ip가 아닐 시 1초의 딜레이 후 $_SESSION['idx'].txt가 삭제되는어 불러올 수 없다.
학교 선배님이 말씀하신게 항상 문제를 코드분석을 할 때 굳이?라는 기능의 코드가 있으면 거기에 취약점이 있을 가능성이 있다 하셨다.
위에 코드에서 굳이 있어야 될까 라는 코드는 sleep(1)이라 생각이 되어 보면
드림핵 login-1과 비슷한 문제임을 알 수 있다. (레이스 컨디션으로 멀티 스레드 환경에서는 프로세스 내의 모든 자원을 공유할 수 있다는 점에서 동기화 문제가 발생한다.)
1초의 딜레이 후 파일이 삭제되므로 1초안에 다른 세션으로 접속하면 파일이 삭제되기 전에 확인할 수 있을 것이다.
우선 $_COOKIE ['PHPSESSID']가 숫자여야되므로 1로 변경 후 재 로그인해 준다.
이후 다른 브라우저 IE, 파이어폭스 등등으로 로그인 후 $_COOKIE ['PHPSESSID'] 값을 다른 숫자로 변경해 준다. (같은 숫자로 할시 같은 프로세스로 인식되기 때문에)
이제 mode파라미터를 auth로 요청해 주면
Auth~로 인증된 걸 확인할 수 있고
두 브라우저에서 동시에 요청을 보내주면
문제가 풀리는 걸 확인할 수 있다.
'Web > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr Challenge old-10 문제 풀이 (0) | 2024.02.27 |
---|---|
Webhacking.kr Challenge old-56 문제 풀이 (0) | 2024.02.19 |
Webhacking.kr Challenge old-11 문제 풀이 (0) | 2024.02.08 |
Webhacking.kr Challenge old-41 문제 풀이 (0) | 2024.02.06 |
Webhacking.kr Challenge old-12 문제 풀이 (0) | 2024.02.05 |