문제 페이지를 보면 테이블에 no와 subject, file에 대한 정보가 나와있고 태그가 걸려있는 것을 볼 수 있다. no 1에 해당하는 read me에 있는 test.zip 파일을 다운받기 위해서 눌러보면 아래와 같이 Access Denied 창이 발생하면서 다운을 받을 수가 없다. no 2에 해당하는 test에 있는 test.txt 파일을 다운받기 위해서 눌러보면 아래와 같이 test.txt 파일의 내용을 확인할 수 있다. 소스 파일을 확인해보면 아래와 같이 주석으로 test.zip 파일의 패스워드는 오직 숫자로만 되어있다는 정보를 얻을 수 있고 다운 받는 부분을 보면 하드코딩으로 test.zip 파일은 받을 수 없도록 되어있는 부분을 볼 수 있다.소스 내용 중에 test.txt 파일을 다운 받는 ..
파일을 업로드하는 기능이 있다. 다른 정보를 더 찾아보기 위해서 소스를 보면 소스 파일이 주어져 있다. 소스 파일을 보면 업로드하는 파일명에 많은 제한을 두었고 해당 문제는 hidden_dir를 알아내서 내가 업로드한 파일명에 기록된 패스워드를 보면 된다..htaccess 파일에 대해 까다롭게 제한을 두고 있기 때문에 다른 우회 방법을 생각해보면 에러를 발생시켜서 업로드 되는 위치 값을 볼 수가 있다. 먼저, 정상적인 파일(파일명: do)을 업로드해서 패스워드가 기록되도록 한다. 그리고, 파일명 조건 중에서 보면 eregi()를 통해 exit()가 아니라 공백으로 치환되는 조건들이 있다. 이를 이용해서 공백으로 치환이 되는 값들로 파일명을 해서 업로드를 하게 되면 서버 쪽에서는 copy() 함수를 실행하..
no, id, pw 를 입력을 해서 로그인할 수 있는 페이지를 볼 수 있다. 로그인을 해보면 아래와 같이 Success - guest 를 볼 수 있다. no 부분에 ||를 이용해서 SQL Injection이 되는 지 확인해보면 로그인이 되는 것을 볼 수 있다. 이를 이용해서 id 값의 첫 글자를 비교해보면 3가지 결과를 얻을 수 있다.0x66(f) 와 비교하였을 경우 해당하는 값은 참이 될 수 없기 때문에 Failure이 발생한다. 0x67(g) 와 비교하였을 경우 guest가 있기 때문에 참이 된다. 0x61(a) 와 비교하였을 경우 admin이 있기 때문에 참이 되고 guset와 달리 admin password를 입력하는 부분을 볼 수 있다. 값을 입력해보면 Wrong 이 발생한다. pw의 길이가 1..