name을 입력할 수 있는 공간과 Make 버튼이 있다. 숫자를 입력해보면 아래와 같이 다섯칸으로 되어있다. Make 버튼을 누르면 index/go.html 페이지로 이동되고 페이지 내용에 hello 12345 가 출력되어 있는 것을 볼 수 있다.즉, 첫 페이지에서 입력한 내용 중 5글자만 index/go.html 페이지에 출력이 된다는 것을 알 수 있다. Code Injection 취약점을 이용한 문제로 추측을 하고 문제의 구조를 파악해보면 다음과 같다. 1. name 으로 입력한 값이 $_POST['name']으로 전달2. $name = substr($_POST['name'],0,5); 5글자만 전달3. system("echo 'hello $name' > index/go.html"); system()..
파일을 업로드할 수가 있고 웹쉘을 올리면 문제를 해결할 수 있다. 힌트로는 파일 타입이 나와있다. 먼저, 문제에서 지시한대로 간단하게 test.php 를 올려보면 아래와 같이 access denied 가 발생하는 것을 볼 수 있다. 우회하기 위해서 test.jpg 로 업로드를 해보면 아래와 같이 정상적으로 파일이 업로드가 되는 것을 볼 수 있다. 힌트에서 파일 타입이라고 알려줬기 때문에 Content-type 값을 image/jpeg 로 변경해서 test.php를 업로드해보면 문제를 풀 수 있다.
문제 페이지를 보면 테이블에 no와 subject, file에 대한 정보가 나와있고 태그가 걸려있는 것을 볼 수 있다. no 1에 해당하는 read me에 있는 test.zip 파일을 다운받기 위해서 눌러보면 아래와 같이 Access Denied 창이 발생하면서 다운을 받을 수가 없다. no 2에 해당하는 test에 있는 test.txt 파일을 다운받기 위해서 눌러보면 아래와 같이 test.txt 파일의 내용을 확인할 수 있다. 소스 파일을 확인해보면 아래와 같이 주석으로 test.zip 파일의 패스워드는 오직 숫자로만 되어있다는 정보를 얻을 수 있고 다운 받는 부분을 보면 하드코딩으로 test.zip 파일은 받을 수 없도록 되어있는 부분을 볼 수 있다.소스 내용 중에 test.txt 파일을 다운 받는 ..