문제 페이지를 보면 값을 입력하여 전송할 수 있는 부분을 볼 수 있다. 다른 정보를 더 얻기 위해서 소스를 보면 아래와 같이 소스 파일을 제공하는 것을 볼 수 있다. 소스 파일을 보면 값을 입력하여 전송을 하면 POST 방식으로 값을 전달을 하고 값 중에서 \(backslash)가 있을 경우 제거를 하고 '(single-quote)가 있을 경우에 '(single-quote)를 하나 더 생성하고 길이가 15자 이하만 Query에 전달을 하여 good을 출력하게 된다. 즉, 입력하는 값을 이용하여 항상 참이 되도록 만들어 주면 문제를 풀 수가 있다. 그리고 소스상에 Query를 보면 id='$_POST[id] 로 되어 있다. 즉, '(single-quote)를 입력해서 해당 Query가 에러가 발생하지 않도..
문제 페이지를 보면 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 디렉터리에 있는 파일들을 출력한다.그리고 ..