SQL INJECTION 문제id와 pw를 입력하는 걸로 봐서는 인증 우회 문제로 보인다. 기본적으로 적혀져 있는대로 로그인을 해보면 아래와 같이 hi guest가 출력 된다. 소스를 보면 index.phps 파일이 주어져 있다는 것을 알 수 있다. index.phps 파일을 보면 id 부분은 admin, from ,union 등이 필터링되어 있고 pw 부분은 md5로 변환되서 비교를 한다는 것을 알 수 있다.그리고 Query 위쪽에 보면 mb_convert_encoding($_GET[id],'utf-8','euc-kr'); 이 있는데 이를 이용해서 magic_quote_gpc, addslashes, real_escape_string 을 우회할 수 있다. (single quote, double quote..
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 파일을 다운 받는 ..