문제 페이지를 보면 LOG INJECTION 문자열과 입력할 수 있는 부분, login, admin 버튼을 볼 수 있다. 소스를 보면 주석으로 admin.php 가 되어 있고, admin 버튼을 누르면 admin.php 페이지로 이동하게 된다. 페이지로 이동해보면 log라고 적혀있다. 해당 페이지에 소스를 보면 hint 로 admin이 주어져 있다. 힌트에 따라서 admin 으로 로그인해보면 you are not admin 이라는 메시지와 함께 로그인이 되지 않는다. 이를 우회하기 위해서 %00(NULL) 문자를 이용해서 우회를 해서 admin 페이지로 이동해보면 로그만 남아있을 뿐 문제는 풀리지 않는다. 로그의 양식을 보면 IP 주소:아이디로 되어있기 때문에 개행문자(%0a)를 이용해서 다음 줄에 자신..
문제 페이지에 접속해보면 아래와 같이 파일 목록 리스트가 길게 늘어져있다. 내리다보면 tmp-Unixtime 형식으로 되어 있는 이름들도 볼 수 있다. 끝까지 내려보면 127.0.0.1:7777 이라는 정보와 파일을 업로드할 수 있는 기능이 있다. 조금 더 정보를 얻기 위해서 소스를 보면 소스 파일이 주어져 있다. 소스 파일을 보면 $time 변수에 time() 값을 저장하고 tmp/tmp-$time 으로 파일을 생성한 다음 127.0.0.1을 기록하고 닫는다.중간에 보면 $file_nm 변수에 업로드한 파일명을 저장하고 파일명에 "", ".", " " 이 있을 경우 "" 으로 치환한다.그리고 해당 파일을 열어서 클라이언트의 IP 주소를 기록하고 닫는다. tmp 디렉터리에 있는 파일들을 출력한다.그리고 ..
문제 페이지를 보면 hint vi blackout이 나와 있다. vi 작성 중에 정전(강제종료, blackout)이 발생할 경우를 대비해서 vi는 백업 파일을 생성한다.해당 페이지를 작성 중에 정전이 발생하였다고 가정을 하면 .index.php.swp로 백업 파일이 남게 되고 해당 파일에 접근을 해보면 아래와 같이 작성 중이던 파일 내용을 볼 수가 있다. 패스워드는 "$_SERVER[REMOTE_ADDR] dlseprtmvpdlwlfmfquswhgkwkglgl" 값을 md5해주면 된다.