Wargame/Root-me = Web - Server
-
<Root-me> File upload - MIME typeWargame/Root-me = Web - Server 2022. 1. 6. 23:45
File upload - MIME type "upload"를 통해 사진을 업로드할 수 있다. 파일 확장자가 GIF, JPEG, PNG만 업로드할 수 있다. 문제 설명을 살펴보면 php 파일을 업로드하여 ".passwd" 파일 안의 비밀번호를 탈취하라고 한다. 위의 코드를 파일명 "test.php"로 하여 업로드해보면 파일 형식이 잘못되었다고 한다. Burp Suite를 사용하여 "test.php" 파일을 업로드하면 요청 헤더 body에 파일의 Content-Type을 확인할 수 있다. "application/octet-stream"을 png 파일로 속이기 위해 "image/png"로 변경시켜 Forward하면 "test.php" 파일을 업로드할 수 있다. "test.php"를 누르면 빈 명령을 실행할 수..
-
<Root-me> HTTP - Verb tamperingWargame/Root-me = Web - Server 2022. 1. 5. 17:38
HTTP - Verb tampering 문제 페이지에 접속하면 alert로 로그인창이 뜬다. 취소를 누르면 인증이 필요하다고 한다. 하지만 로그인할 사용자이름과 비밀번호에 대한 단서가 보이지 않는다. 문제 이름인 HTTP Verb tampering은 HTTP Verb(HTTP Method) 인증 및 접근 제어 메커니즘의 취약점을 악용하는 공격이다. 만약 관리자가 GET 또는 POST Method를 차단되도록 설정한다면, 사용자는 GET 또는 POST Method로 요청할 시 차단되지만 다른 Method 요청은 차단되지 않는다. Burp Suite를 이용해 요청 헤더에서 HTTP Method를 POST로 바꿔도 인증이 되지 않는다. HTTP Method에는 GET, POST외에도 HEAD, PUT, DEL..
-
<Root-me> HTTP - Improper redirectWargame/Root-me = Web - Server 2022. 1. 3. 12:59
HTTP - Improper redirect 이 페이지로 접근하기 위해서는 로그인을 해야한다. 문제 설명을 보면 index 페이지로 접근 권한을 얻으라고 한다. URL창에서 login.php를 index.php로 바꿔보면 다시 login.php로 리다이렉션된다. Burp Suite의 Repeater를 사용하여 요청 헤더에서 URI를 index.php로 바꿔보면 FLAG 값을 구할 수 있다. 이는 HTTP 요청과 응답 시 항상 Proxy Server를 거쳐 데이터가 이동하기에 Burp Suite로 조작이 가능한 것이다.
-
<Root-me> Open redirectWargame/Root-me = Web - Server 2022. 1. 3. 01:00
Open redirect 각 버튼들은 각 사이트로 리다이렉션 해준다. 문제 설명을 살펴보면 웹 페이지에 표시된 것과 다른 도메인으로 리다이렉션하는 방법을 찾으라고 한다. 페이지 소스 코드를 살펴보면 ?url={도메인}&h={32자리 문자열} 형태를 띄고있다. 32자리 문자열이기 때문에 md5를 의심해 볼 수 있다. "https://facebook.com"으로 md5 해시를 생성하면 "a023cfbf5f1c39bdf8407f28b60cd134"가 된다. 즉, h는 도메인의 md5 해시값이다. 다른 도메인도 마찬가지이다. 따라서, ?url={url이 아닌 문자열도 가능}&h={앞의 문자열의 md5 해시값}을 만족하기만 하면 된다. 개발자 도구 Elements 탭에서 HTML을 변경하여 변경한 버튼을 클릭하면..
-
<Root-me> SQL injection - Authentication - GBKWargame/Root-me = Web - Server 2022. 1. 2. 16:22
SQL injection - Authentication - GBK 관리자의 계정을 획득하라고 한다. "Liste des membres"를 누르면 사용자 목록을 보여준다. 우선, 관리자의 ID가 admin임을 알 수 있다. SQL Injection 기본 구문인 "admin'-- " 또는 "' or 1=1-- "을 입력하면 식별 오류라 한다. 문제 제목을 보면 GBK라고 나와있다. GBK는 중국에서 사용되는 중국어 간체에 대한 GB2312 문자집합의 확장이라고 한다. $id = addslashes($_GET['id']); 위와 같은 코드가 있을 때, ?id=1'를 입력하면 1\' 로 이스케이프 처리된다. ?id=1"를 입력해도 1\"로 이스케이프 처리된다. 만약 SQL에서 Big5, GBK, SJIS 등과 ..