본문 바로가기

보안공부/Webhacking.kr 풀이

Webhacking.kr 60번 문제 풀이

60번 문제는 다음과 같은 문구로 환영(?)해준다.

우선 코드를 먼저 분석해보도록 하자.

 

코드를 보았을 때, 세션 ID(PHPSESSID)에 숫자가 아닌 다른 문자가 포함되어 있으면 Access Denied를 출력하며 코드를 탈출한다는 것을 알 수 있다.

 

위와 같은 사실을 알고난 뒤 우리의 세션 ID를 보면 알파벳과 숫자가 섞여있는 것을 볼 수 있다.

그럼 조건을 맞춰주기 위해 저 세션 ID를 모두 지우고 아무 숫자로 바꿔주고 다시 로그인하여 활성화시켜주자.

이렇게 숫자로만 이루어지도록 만들어주면 비로소 제대로 반겨준다.

auth를 해주기 위해 주소에 ?mode=auth를 넣어주면 1초동안 sleep상태에 있다가 로드됩니다.

하지만 아무런 값도 나오지 않고 Auth~만 나오게 됩니다.

코드를 확인해보면 접속한 사용자의 IP($_SERVER['REMOTE_ADDR'])가 127.0.0.1이 아니면 sleep된 1초 안에 파일을 지워버린다는것을 확인할 수 있습니다.

 

그럼 여기서 우리는 1초안에 플래그를 확인해야겠죠?

저는 이 문제를 해결하기 위해 크롬의 시크릿모드를 활용하였습니다.

 

일반 모드와 시크릿모드를 동시에 해당 문제에 들어가고,

동시에 새로고침하여 하나가 로드하고 sleep될 동안에 다른 하나가 플래그를 가져오는거죠.

 

위같은 방식으로 시도했더니 문제가 풀렸습니다 :)