도카이트

[Wargame] Webhacking.kr - old 25 본문

Wargame/Webhacking.kr

[Wargame] Webhacking.kr - old 25

dodoh4t 2022. 6. 16. 21:17
728x90
반응형

문제 화면

[old 25 - 문제 화면]

- ls 명령어가 출력된 것으로 보이는 화면이 출력되어 있다.

- file 파라미터 값으로 hello 가 입력되어 있으며, textarea에 hello world가 출력되어 있다.

- file 파라미터 값으로 ls 로 확인할 수 있는 파일명을 입력하면 파일 내용을 확인할 수 있는 듯 하다.

- LFI (Local File Inclusion) 취약점을 이용하여 풀이하는 문제인 것 같다 !!

- 먼저 file 값으로 flag 를 입력해보도록 한다.

 

 

LFI 취약점에 관한 실습 내용은 아래 포스트를 참고하면 좋을 듯 하다 !

 

[DVWA] File Inclusion (Low)

File Inclusion Vulnerability 공격자가 악성 스크립트를 서버에 전달하여, 해당 페이지를 통해 전달한 악성 스크립트 또는 코드가 실행되도록 하는 취약점이다. 삽입 파일의 위치에 따라서 RFI(Remote File

dyeonee.tistory.com

 

 

file 값에 flag 입력

[file 값에 flag 입력]

- file 값에 flag를 입력하여 페이지 탐색 시 FLAG is in the code 라는 문자열이 출력된다.

- flag.php 코드 내에 FLAG 값이 존재하는 듯 하다.

- 추가로 file 값에 index 를 넣어 index.php 의 결과도 확인해보았으나, 아무 것도 없었다.

- flag.php 의 코드 내용을 확인하기 위해서는 어떻게 해야 할까 ??

 

 

예전에 Dreamhack.io 의 웹 해킹 강의를 학습하면서 필기했던 내용인 PHP Wrapper가 떠올랐다.

PHP Wrapper 가 어떤 것이며, 어떻게 사용하는지 먼저 알아보자 !!

출처 및 참고 : dreamhack.io

 

해커들의 놀이터, Dreamhack

해킹과 보안에 대한 공부를 하고 싶은 학생, 안전한 코드를 작성하고 싶은 개발자, 보안 지식과 실력을 업그레이드 시키고 싶은 보안 전문가까지 함께 공부하고 연습하며 지식을 나누고 실력 향

dreamhack.io

 


PHP Wrapper

PHP는 파일 시스템 함수에서 URL style 프로토콜을 위한 wrapper들이 존재하는데, 파일 시스템 관련 함수로 filename이 사용자의 입력이 될 경우 php wrapper를 사용해 개발자의 의도와 다른 행위를 발생시킬 수 있다.

  • php://filter : I/O 스트림에 특정 필터를 설정
    • read=<filter> : read 시 사용할 필터
    • write=<filter> : write 시 사용할 필터
    • resource=<stream name> : 필터링을 설정할 stream 정보
# /etc/passwd 를 대문자로 read
php://filter/read=string.toupper/resource=/etc/passwd

# 데이터 출력 시 대문자로 처리
php://filter/write=string.toupper/resource=example.txt,"Hello World"

php에서 include시 php 태그가 존재하면 php가 실행되고 해당 코드는 출력되지 않는다. 따라서, base64 등의

인코딩을 통해 php tag를 인코딩 시켜 코드가 실행되지 않고 출력되게 하여 소스코드를 노출시키는 방법을 자주 사용한다.

php://filter/read=convert.base64-encode/resource=filename.php

 


PHP Wrapper를 이용한 base64-encode 값 획득

[PHP Wrapper를 이용한 base64-encode 값 획득]

- PHP Wrapper의 filter 기능을 이용하여 flag.php를 base64-encode로 변환하여 read 한다.

- 위 예제에 사용한 구문은 다음과 같다.

- php://filter/read=convert.base64-encode/resource=flag

- flag.php 의 내용이 base64 방식으로 encode 되어 textarea에 출력되었다 !

- base64 decode 사이트를 이용하여 해당 내용을 디코딩하여 확인해보도록 한다.

 

 

참고) base64 encode / decode 사이트

 

Base64 Decode and Encode - Online

Decode from Base64 format or encode into it with various advanced options. Our site has an easy to use online tool to convert your data.

www.base64decode.org

 

 

FLAG 값 획득

[FLAG 값 획득]

- 앞서 획득한 base64로 인코딩된 값을 사이트에 붙여넣기 후 decode 한다.

- flag.php 의 소스코드를 확인할 수 있으며 $flag 변수 값으로 FLAG 값이 작성되어 있다.

- FLAG 값을 복사하여 webhacking.kr 메인 화면의 좌측 Auth 탭으로 이동하여

- FLAG 입력란에 해당 FLAG 값을 붙여넣기 후 auth 해주면 문제가 solve 된다 !

728x90

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

[Wargame] Webhacking.kr - old 27  (0) 2022.06.17
[Wargame] Webhacking.kr - old 26  (0) 2022.06.16
[Wargame] Webhacking.kr - old 24  (0) 2022.06.16
[Wargame] Webhacking.kr - old 23  (0) 2022.06.16
[Wargame] Webhacking.kr - old 20  (0) 2022.06.16
Comments