일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- sql injection
- DreamHack
- DVWA
- XSS
- H4CKINGGAME
- 드림핵
- Weak Session IDs
- Los
- 웹 해킹
- bypass CAPTCHA
- Insecure CAPTCHA
- 정보보안
- Remote File Inclusion
- 써니나타스
- File Upload Vulnerability
- TeamH4C
- Cross Site Scripting
- Web Hacking
- Lord of SQL Injection
- webhacking.kr
- Dremhack
- DOM-Based XSS
- SuNiNaTas
- 정보보호
- wargame
- Hackerfactory
- 빡공팟 4기
- 빡공팟 6기
- 해커팩토리
- 워게임
- Today
- Total
도카이트
[Wargame] Webhacking.kr - 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를 입력하여 페이지 탐색 시 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의 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 값 획득
- 앞서 획득한 base64로 인코딩된 값을 사이트에 붙여넣기 후 decode 한다.
- flag.php 의 소스코드를 확인할 수 있으며 $flag 변수 값으로 FLAG 값이 작성되어 있다.
- FLAG 값을 복사하여 webhacking.kr 메인 화면의 좌측 Auth 탭으로 이동하여
- FLAG 입력란에 해당 FLAG 값을 붙여넣기 후 auth 해주면 문제가 solve 된다 !
'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 |