SQL INJECTION 문자열을 통해 SQL Injection 문제임을 알 수 있고 입력할 수 있는 공간이 있다. 다른 정보를 얻기 위해서 소스 파일을 보면 index.phps 소스 파일도 제공하고 있다. 소스 파일을 보면 $q=@mysql_fetch_array(mysql_query("select id from challenge27_table where id='guest' and no=($_GET[no])")) or die("query error");$GET_[no] 을 통해서 받은 값을 Query에 입력하고 나온 결과값을 비교하였을 때 admin이 출력이 되면 문제를 풀 수 있다.그리고 소스 파일 중간에 보면 SQL Injection에 사용되는 다양한 문자들을 필터링한 것을 볼 수 있다. 이 문제는 ..
문제 페이지를 보면 소스 파일 index.phps가 표시되어 있다. 소스를 보면 $_GET[id] 값이 admin이 되면 문제를 풀 수 있으나 앞에서 admin이 될 경우 no!를 출력하고 종료가 된다.그리고 소스 중간에 $_GET[id]=urldecode($_GET[id]); URL Decode 해주는 부분이 있는데 다시 이야기를 하자면 입력값을 브라우저에서 1번, 소스에서 1번, 총 2번을 URL Decode 해준다.이를 이용하여 admin 중 a를 %61로 URL Encode 해주고 필터링 부분을 우회하기 위해서 1번 더 %61 을 URL Encode 해주면 %2561 이 된다.즉, ?id=%2561dmin을 입력하면 브라우저에서 URL Decode 해주면 id=%61dmin 이 되고 필터링 부분에..
문제 페이지를 보면 파일 목록이 출력되어 있고 하단에는 hello world 라는 문자열이 출력되어 있다. 그리고 url에 보면 ?file=hello 라고 되어 있는데 아마도 파일 목록 중에서 hello.txt 파일의 내용을 출력해주고 있는 것 같다. (확장자 .txt는 서버에서 붙여서 파일 내용을 불러오는 구조) 이를 이용하여 password.php를 보기 위해서는 ?file=password.php를 한 다음에 .txt를 제거하기 위해서 %00(null) 문자를 붙여서 입력하면 password.php 파일의 내용을 볼 수 있다.