본문으로 바로가기

[Webhacking.kr]25번

category Wargame/webhacking.kr 2017. 7. 31. 21:58


25번을 클릭하면 나오는 화면이다.


get방식으로 file이라는 변수에 hello의 값을 기본값으로 전송되는것 같다.


아마 이 파일의 이름을 입력하면 해당 파일을 볼 수 있는것 같다.


변수명을 다른 파일로 바꿔주자


바뀌는건 없었다....



뭐가 문제인걸까?



아예 실행을 시켜보고자 변수를 다 없애고 password.php를 쳤더니 하얀화면만 나왔다...


이번에는 index.php를 쳤더니 현재화면이 그대로 나왔다..




텍스트창에 있는 hello world가 계속 갱신되고 있는건지 애초에 바뀌지 않았던건지 확인해보고자


아무말이나 더해보았다.



실행!!!!!!!




hello world로 바뀌었다.



이를 통해 알 수 있는 사실을 정리해보자




사실1. file변수로 값을 입력받으면 어떠한 값이 들어가도 hello.txt가 출력된다.


사실2. 첫 화면에서 확장자가 없어도 hello.txt를 실행시켰다.


사실3. 화면에 보여지는 결과를 바꾸기 위해 서버에 데이터를 보내는 방법은 GET방식으로 file 변수를 보내는 방법밖에 없다.




file을 이용해서 푸는 문제임은 확실하고 file에 넣어본 모든 값에대한 결과는 hello.txt였다.


그러나 사실2는 기본값으로 실행된것이므로 오류가 아닐 확률이 크다.

(오히려 힌트라고 볼 수 있다.)


즉, hello를 입력해서 hello.txt를 출력하는 과정이 가장 정상적인 방법이라는 것이다.


그 외의 다른 값들을 넣었을 때 hello.txt로 갔던 방법은 정상적인 방법이 아니었다는 것이다.


예외처리라고 보면 좋을것 같다.





그렇다면 hello를 입력하면 어떻게 hello.txt를 열 수 있는것일까?


가능성1. 들어오는 모든 값을 무시하고 hello.txt를 출력


기본값을 설정해준 의미가 사라지기 때문에 패스


가능성2. 들어오는 값에 자동으로 확장자를 붙여준다


말이 안됨


가능성3. 들어오는 모든 값에 .txt 확장자를 붙인다


가능성이 매우 크다.




들어오는 모든값에 txt확장자를 붙인다고 가정하자.


그렇다면 다른 파일들이 안열렸던 이유도 알 수 있다.


password -> password.txt가 되면서 없는 파일이기때문에 예외처리되었을 가능성이 크다.


그러면 어떻게 .txt를 붙이지 않을 수 있을까?.....






NULL(문자열의 끝을 알림)


널 사랑하지 않아 ㅡ3ㅡ


null을 넣으면서 눈에 보이진 않지만 문자열의 인덱스 한 부분을 차지하고있게된다.




NULL을 통해 문자열의 끝을 알려주어 파일이 정상적으로 실행되도록 해야한다.



'Wargame > webhacking.kr' 카테고리의 다른 글

[Webhacking.kr]33번  (0) 2017.08.01
[Webhacking.kr]47번  (0) 2017.07.31
[Webhacking.kr]27번  (0) 2017.07.31
[Webhacking.kr]21번  (0) 2017.07.31
[Webhacking.kr]23번  (0) 2017.07.31