본문 바로가기
작업/Webhacking.kr

webhacking.kr old-25 이해하기

728x90

 

 

old-25 페이지는 php와 관련된 문제라고 되어있었습니다.


페이지의 첫 화면은 hello.php 파일을 연 상태임을 알 수 있었습니다.
hello world가 회색 텍스트 박스에 표시되고 있었습니다.


페이지 소스코드를 열어보아도 특별히 알 수 있는 내용은 없었습니다.
그래서 php 파일들을 URL에 입력하여 하나씩 열어보았습니다.

 

index.php

 

 

 

flag.php

 

 

flag.php 파일을 열어보면 "FLAG is in the code"라는 출력을 확인할 수 있습니다.


해당 코드 안에 있다는 의미를 스스로 이해하기엔 지식이 부족했습니다.
그래서 검색을 통해 php를 이용한 공격 예제 중 File Inclusion 취약점을 알았습니다.


php 구성의 웹페이지에서 파라미터 값이 정확히 필터링되지 않는 취약점을 이용한 방법입니다.
php를 통해 만들어진 값을 다른 방법을 활용하여 접근하고, 공격자가 의도한 값을 찾아내는 것입니다.

 

 

wrapper(래퍼)를 통해 php 파일에 접근하여 숨겨진 값을 알아보겠습니다.
wrapper는 다른 프로그램이 성공적으로 실행되도록 설정하는 프로그램이나 스크립트입니다. 


가장 자주 쓰이는 http://가 예시입니다.
php도 php://로 wrapper 적용이 가능합니다.


wrapper를 적용하고 입출력에 대한 정보를 다루는 filter를 적용합니다.
그렇게 하면 encode/decode 옵션을 사용하여 base64 형태로 서버 안에 존재하는 문서들을 열람할 수 있습니다.


/?file=php://filter/convert.base64-encode/resource=접근할 파일 이름

 

 

URL에 접근 코드를 입력하고 엔터를 누르면
flag에 있는 데이터가 base64 형태로 인코딩 된 것을 확인할 수 있습니다.

 

 

 base64 형태의 인코딩은 마지막에 자릿수 채우는 용도로 =기호가 사용됩니다.


base64 데이터를 인코딩/디코딩하는 사이트는 아래 링크로 달았습니다.

 

 

www.base64decode.org/

 

Base64 Decode and Encode - Online

Decode from Base64 or Encode to Base64 with advanced formatting options. Enter our site for an easy-to-use online tool.

www.base64decode.org

 

 

이제 출력된 값을 디코딩 작업을 통해 복호화해보았습니다.

 

 

 

 

 

결과 값으로 php 코드가 등장한 것을 알 수 있습니다.
flag 값으로 " FLAG{this_is_your_first_flag} "가 저장되어 있다는 것을 알 수 있었습니다.


답을 알아냈기 때문에 적용을 webhacking.kr로 돌아가서 값을 입력했습니다.


flag 값이기 때문에 Auth 메뉴에서 진행했습니다.

 

 

 

 

문제가 해결되었습니다!

 

 

 

-끝-

 

 

 

 

 

 

728x90

'작업 > Webhacking.kr' 카테고리의 다른 글

webhacking.kr old-27 이해하기  (0) 2020.09.05
webhacking.kr old-38 이해하기  (0) 2020.09.03
webhacking.kr old-19 이해하기  (0) 2020.09.02
webhacking.kr old-6 이해하기  (0) 2020.09.02
webhacking.kr old-24 이해하기  (0) 2020.09.01