Wargame/Root-me = Web - Server
-
<Root-me> Local File InclusionWargame/Root-me = Web - Server 2022. 1. 18. 14:14
Local File Inclusion 각 경로에 있는 파일들을 보여준다. 문제 설명을 살펴보면 admin 구역에 접근하라고 한다. 우측 상단을 보면 "guest | admin"을 찾을 수 있는데, admin을 누르면 로그인 창이 뜬다. 문제 제목인 LFI 취약점을 이용하여 admin의 비밀번호를 찾아야 한다. sysadm, reseau, esprit 등 각 경로는 URL 쿼리의 파라미터로 결정하는 것을 확인할 수 있다. 파라미터의 값으로 상위경로를 뜻하는 "../"을 입력해보면 답으로 보이는 admin 파일을 찾을 수 있다. admin을 누르면 "File : admin"만 출력한다. 파일이 아닌 디렉터리라 열리지 않는 것 같다. 쿼리 파라미터 값을 "../admin"으로 주게되면 index.php 파일을..
-
<Root-me> Python - Server-side Template InjectionWargame/Root-me = Web - Server 2022. 1. 15. 15:12
Python - Server-side Template Injection title과 page content에 test를 입력하고 "Render your page!"를 눌러보면 문제 설명을 살펴보면 이 서비스로 웹 페이지를 만들 수 있다고 한다. 이 서비스를 이용하여 flag를 읽으라고 한다. 문제 제목에 나온 대로 SSTI 취약점을 이용하면 문제를 해결할 수 있다. page content에 {{ 7*7 }}을 입력하면 7*7이 실행되어 49가 됨을 확인할 수 있다. 이는 웹 템플릿 엔진을 사용함을 뜻한다. 웹 템플릿 엔진은 웹 템플릿과 웹 콘텐츠 정보를 처리하는 목적으로 설계된 소프트웨어를 뜻한다. 이 SSTI 취약점을 이용하여 RCE와 연계할 수 있다. RCE(Remote Code Execute)는 원..
-
<Root-me> PHP - register globalsWargame/Root-me = Web - Server 2022. 1. 14. 12:18
PHP - register globals 비밀번호를 입력할 수 있다. 문제 설명을 보면 개발자들이 종종 백업 파일을 주변에 남겨둔다고 한다. BAK 파일은 동일한 목적으로 여러 응용 프로그램에서 모두 사용되는 백업 파일이다. 대부분의 BAK 파일은 백업을 저장해야하는 프로그램에 의해 자동으로 작성된다. 따라서, ./index.php.bak을 입력하면 index.php.bak 파일을 다운로드 받을 수 있다. index.php.bak 파일을 열면
-
<Root-me> PHP - FiltersWargame/Root-me = Web - Server 2022. 1. 13. 02:57
PHP - Filters 파일을 보기 위해서는 로그인하라고 한다. login을 누르면 로그인 폼이 뜬다. 하지만 로그인에 대한 정보나 힌트를 찾을 수 없다. URL을 보면 각 페이지를 요청하기 위해 GET Method를 사용하는 것을 알 수 있다. inc의 값으로 상위 경로를 뜻하는 ../을 입력해보면 경고를 출력하는데, include()로 보아 LFI 취약점 공격을 생각할 수 있다. PHP Wrapper를 통해 소스 코드를 볼 수 있다. 가장 많이 사용되는 방법인 php://filter를 사용하여 로그인 페이지의 소스 코드를 찾아보기 위해 ?inc=php://filter/convert.base64-encode/resource=login.php를 입력하면 긴 문자열 하나가 출력된다. 이 문자열은 base..
-
<Root-me> File upload - Null byteWargame/Root-me = Web - Server 2022. 1. 11. 11:32
File upload - Null byte 사진 갤러리에서 upload를 통해 파일을 upload 할 수 있다. 문제 설명을 보면 갤러리에 PHP 코드를 업로드시켜 해킹하라고 한다. 업로드 가능 확장자는 GIF, JPEG, PNG만 가능하다. PHP 웹 셸 코드를 준비하여 Burp Suite로 Content-Type만 바꿔서 업로드해보면 잘못된 확장자라고 한다. 해당 경로에 접근해도 "404 Not Found"를 출력한다. 문제 제목에 Null Byte를 참고하여 구글링 해보면 Null Byte Injection을 찾을 수 있다. Null Byte Injection은 URL로 인코딩 된 널 바이트 문자(%00 or 0x00)를 입력 데이터에 이용하여 악성코드 파일을 업로드시켜 시스템 권한을 획득하거나 주..
-
<Root-me> Directory traversalWargame/Root-me = Web - Server 2022. 1. 11. 00:39
Directory traversal emotes, apps, devices, categories, actions 각각의 페이지에 사진 파일들이 들어있다. emotes를 눌러보면 GET Method로 galerie 파라미터를 가져오는 것을 확인할 수 있다. galerie 파라미터를 없이 입력하면 숨겨진 페이지인 86hwnX2r을 찾을 수 있다. ?galerie=86hwnX2r을 입력하면 password 파일이 있다. password 파일을 열어보면 flag 값을 획득할 수 있다.
-
<Root-me> PHP - assert()Wargame/Root-me = Web - Server 2022. 1. 10. 14:13
PHP - assert() Home, About, Contact 페이지가 있다. About 페이지를 열어보면 GET Method를 사용함을 알 수 있다. ?page=../ 를 입력해보면 assert() 함수에 의해 오류 메시지를 출력한다. 그리고 입력한 ../ 뒤에 .php가 추가되는 것을 확인할 수 있다. ?page='.system(ls).' 를 입력하면 system(ls)가 실행된다. ?page='.system('ls -al').' 를 입력하면 현재 경로에 .passwd 파일이 있음을 확인할 수 있다. ?page='.system('cat .passwd').' 를 입력하면 flag 값을 획득할 수 있다.
-
<Root-me> JSON Web Token(JWT) - IntroductionWargame/Root-me = Web - Server 2022. 1. 8. 18:18
JSON Web Token(JWT) - Introduction 관리자로 접속해야 한다. ■ JWT JWT는 JSON Web Token의 약자로, 전자 서명된 URL-safe(URL로 이용할 수 있는 문자로만 구성된)의 JSON이다. 전자 서명은 JSON의 변조를 확인할 수 있게 되어있다. JWT는 속성 정보(Claim)를 JSON 데이터 구조로 표현한 토큰으로 RFC7519 표준이다. JWT는 서버와 클라이언트 간 정보를 주고받을 때 HTTP 요청 헤더에 JSON 토큰을 넣으면, 서버는 별도의 인증 과정 없이 헤더에 포함되어있는 JWT 정보를 통해 인증한다. ■ JWT Token 구성 header.payload.signature JWT는 위의 세 부분으로 나눠지며, URI에서 파라미터로 사용할 수 있도록..