25번 문제이다. 윗줄에는 3개의 파일명이 쓰여 있고 아래에는 hello world가 출력되어 있다. 주소창을 보면 ?file=hello라고 쓰여 있는 부분이 있다. 이걸 지우고 hello.txt를 입력해 보았다. 처음 페이지에 쓰여 있던 hello world가 나와 있다. 이를 통해 ?file=hello는 hello.txt 파일을 연 것이라고 생각할 수 있다. 확장자를 입력하지 않아도 ?file뒤에 입력된 문자에 알아서 .txt를 붙여 실행된다고 볼수 있겠다. 문제는 password.php인데, ?file=password.php를 입력하면 아무 일도 일어나지 않고, ?file을 지우고 입력하면 텅빈 페이지만 나오게 된다. 자동으로 .txt가 붙는 것을 막아야 한다는 뜻이다. 23번에서 사용했던 null..
23번 문제이다. 1을 출력하도록 injection을 하라는 것으로 보인다. 를 그대로 입력하면 no hack이라는 문구가 나온다. 문자, 특수문자, 숫자 등을 입력해 보면서 확인한 결과 문자열을 입력하면 필터되어서 no hack이라는 문구를 출력하고 특수문자나 숫자는 필터링을 하지 못하고 입력한 값 그대로 출력한다. 단, 문자가 서로 떨어져 있으면(ex : a b)필터링을 하지 못한다. 이를 이용해a l e r t(1);를 입력해 보았다. 주소창에는 %3C+s+c+r+i+p+t%3Ea+l+e+r+t%281%29%3B%3C%2Fs+c+r+i+p+t%3E가 입력되었다. 띄어쓰기가 +로 바뀌어 제대로 코드가 동작되지 못한다. 띄어쓰기 대신 아무것도 없다는 뜻인 null을 입력해 보자..
11번 문제이다. 이번 문제는 php정규식을 이용한 문제이다. 이 무제에서 사용된 정규식을 몇 가지 설명하자면 $pat의 시작과 끝에 있는 /는 정규식의 시작과 끝을 의미한다. [@-#]는 @부터#까지의 문자 중 아무 문자 하나를 뜻한다. {a}는 앞의 문자가 a개 이상 반복된다는 뜻이다. *은 앞의 문자가 0회 이상 반복된다는 뜻이다. \t는 tab을 의미하는 문자이다. 아랫줄은 val이 pat과 같아지면 password가 출력된다는 뜻이다. 위의 설명에 따라 pat을 구해보았다. 1aaaaa_.168.188.235.103.%09p%09a%09s%09s (1-3은 1, a-f는 a로 지정하였고 범위 내의 다른 문자를 사용해도 상관없다.) 주소창에 ?val=1aaaaa_.168.188.235.103.%0..
47번 문제이다. 뭔가 입력하는 창이 있길래 아무거나 치고 쿼리전송 버튼을 눌러 봤지만 done이라는 문구만 나오고 아무일도 일어나지 않았다. 코드를 보면 로 주석처리가 되어 있고 코드를 보면 무슨 말인지 모르겠다. 툴을 사용하여 풀어보았다. 툴은 Burp Suite와 Proxy를 사용하였다. 우선 크롬 브라우저로 47번 문제를 들어간 후 미리 설치한 proxy를 실행시킨다. 그 다음, burp suite를 실행시키고 proxy -> intercept is on 순서대로 누른다. 문제의 입력 창에 아무 이메일이나 입력한 뒤 쿼리를 전송하면 이런 식으로 burp suite에 어떠한 정보가 출력된다. 아랫줄에 cc : 동일한 이메일을 입력한 뒤 forward버튼을 누르면 이렇게 password가 출력된다.
38번 문제이다. 입력하는 창이 하나 있는데 아무거나 입력하고 로그인 버튼을 눌러 봤지만 변화가 없다. 하지만 admin버튼을 누르면 아이피 : 입력한 문자 와 같은 형태로 출력이 된다. 코드를 보면 로 주석처리 되어 있는 부분이 있다. 웹주소 뒤에 admin.php를 입력해 보면 위에 사진과 같은 페이지로 이동하게 된다. 다시한번 코드를 보면 로 주석처리가 되어 있다. 입력창에 admin을 입력하라는 의미 같은데 그대로 입력하고 로그인버튼을 누르면 you are not admin이라는 문구가 나온다. 아까 admin.php의 출력 구조를 본떠서 본인의 아이피 : admin을 입력해 준 뒤 login버튼을 누르고 admin버튼을 누르면 클리어
42번 문제이다. download버튼이 두 개 있는데 첫번째 버튼을 누르면 test~~라는 문구가 나오고 두번째 버튼을 누르면 Access Denied라는 알림창이 나온다. 코드를 보면 ?down=dGVzdC50eHQ라는 부분이 있는데 이걸 주소창 뒤에 입력해 주면 첫번째 다운로드 버튼을 눌렀을 때와 같으 창으로 이동한다. dGVzdC50eHQ를 base64로 디코딩 해보면 test.txt가 된다. 이를 역이용하여 test.zip을 인코딩하면dGVzdC56aXA=이라는 코드가 나오고, 주소창 옆에 ?down=dGVzdC56aXA=을 입력하면 알집 파일을 하나 다운로드 할 수 있다. 알집파일에는 비밀번호가 걸려 있는데 이는 알집 비밀번호를 푸는 프로그램을 다운받아 풀수 있다. 압축을 해제하면 텍스트 파일이..
문제를 클릭하면 이런 페이지가 나온다. index.phps를 클릭하면 코드를 볼 수 있다. 여기서 id값이 admin으로 나와야 문제가 해결되는데 if문에서 eregi함수를 이용해 id에 admin이 들어가면 no!를 출력하도록 되어 있고, 아랫줄엔 id값을 한번 디코딩한다고 쓰여 있다. 결과적으로 id값을 인코딩한 값이 답이 되어야 하는데, 인터넷에 url인코딩 표를 찾아 admin을 바꾸면%61%64%6D%69%6E가 된다. 하지만 쿠키값에 해당 값을 입력하면 no가 출력된다. 한번 더 인코딩하여 나온 %%36%31%%36%34%%36%44%%36%39%%36%45를 id값으로입력해 주면 클리어
24번 문제이다. F12를 누르면 주석 부분에 index.phps라고 쓰여 있다. 사이트 주소 뒤에 그대로 넣어 주면 문제와 관련된 코드를 볼 수 있다. $ip값이 127.0.0.1이 되면 문제가 해결되는데, 위에서 "12", "7.", "0."을 제거하여 127.0.0.1을 그대로 입력하면 1로 바뀌어 문제를 해결할 수 없다. 따라서 1 "12" 27 "7." .0 "0." .0 "0." .1 이런 식으로 입력해 주면 제대로 된 값을 얻을 수 있다. $ip=$REMOTE_ADDR;이므로 콘솔에 javascript:document.cookie="REMOTE_ADDR=112277..00..00..1;"; 를 입력해 주면 문제가 해결된다.