Wargame
-
<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> XSS - Stored 1Wargame/Root-me = Web - Client 2022. 1. 4. 14:55
XSS - Stored 1 관리자의 쿠키를 탈취하라고 한다. XSS Stored 공격은 웹 서버에 저장되었다가 실행된다. request bin과 같은 HTTP 요청을 받을 수 있는 사이트를 이용해 Message에 를 입력하면 사진 파일이 올라가게 되는데, 이를 관리자가 보게되면 자바스크립트 코드에 의해 관리자의 쿠키를 request bin 주소로 요청하게 된다. ADMIN_COOKIE라는 키를 가진 관리자의 쿠키를 획득할 수 있다.
-
<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 등과 ..
-
<Root-me> PHP - Command injectionWargame/Root-me = Web - Server 2022. 1. 2. 14:13
PHP - Command injection IP를 입력하라는 것 같다. 특정 IP 주소를 제출해보면 ping 명령어의 결과를 출력한다. ping 명령어는 다양한 원격 호스트와 네트워크 상태를 판별하고, 하드웨어 및 소프트웨어 문제점을 추적 및 격리하며, 네트워크를 테스트, 측정 및 관리하는데 사용한다. 패킷이 3개만 출력되는 것으로 보아 "ping -c 3 {IP 주소}"를 실행하는 것 같다. 문제 설명을 보면 FLAG는 index.php 파일 안에 있다고 한다. Commad Injection 공격을 수행할 때 "&&"와 "||"을 사용할 수 있다. && 명령어 연속 실행 한 줄에 여러 명령어를 사용하려 할 때 사용 앞 명령어에서 에러가 발생하지 않아야 뒷 명령어 실행 $ echo hi && echo w..