Wargame
-
<Root-me> Javascript - AuthenticationWargame/Root-me = Web - Client 2021. 12. 18. 23:08
관리자 계정으로 로그인하면 되는 것 같다. 개발자 도구의 Elements 탭에서 태크를 살펴보면 "login.js"를 찾을 수 있다. "login.js"를 살펴보면 function Login(){ var pseudo=document.login.pseudo.value; var username=pseudo.toLowerCase(); var password=document.login.password.value; password=password.toLowerCase(); if (pseudo=="4dm1n" && password=="sh.org") { alert("Password accepté, vous pouvez valider le challenge avec ce mot de passe.\nYou an val..
-
<Root-me> HTML - disabled buttonsWargame/Root-me = Web - Client 2021. 12. 18. 14:42
웹 사이트가 일시적으로 닫혔다고 한다. Member access 버튼이 비활성화된 것을 확인할 수 있다. 문제 제목이 "disabled buttons"인 것으로 보아 버튼을 활성화시키면 문제가 풀리는 것 같다. 페이지 소스 코드를 살펴보면 input 태그에 disabled 속성이 추가되어있다. input 태그에서 disabled 속성은 말 그대로 입력 필드가 사용불가임을 뜻한다. 개발자 도구 Elements에서 위의 form 부분을 찾아 disabled를 지울 수 있다. 그럼, 두 입력 필드가 활성화된 것을 볼 수 있다. 별다른 말이 없으니 아무거나 입력하고 Member access를 누르면 인증 키값을 찾을 수 있다.
-
<Webhacking.kr> old-33Wargame/Webhacking.kr 2021. 12. 15. 23:21
old-33 ■Challenge 33-1 "Wrong"만 보인다. view-source를 통해 소스 코드를 살펴보면 Challenge 33-1 view-source GET 방식으로 전달받은 get이 "hehe"이면 Next가 출력된다고 한다. 페이지에 입력 폼이 없지만 GET 방식이므로 URL에 ?get=hehe를 입력하면 Next를 통해 어디로 접속할 수 있다. Next를 누르면 다시 "Wrong"을 출력한다. ■Challenge 33-2 그런데 Challenge 33-1에서 Challenge 33-2로 바뀐 것을 확인할 수 있다. view-source를 살펴보면 Challenge 33-2 view-source 소스 코드도 바뀌었다. 이번엔 POST 방식으로 전달받은 post가 "hehe"이고, pos..
-
<Lord of SQL Injection> cthulhuWargame/Lord of SQL Injection 2021. 12. 13. 16:26
cthulhu 서버에 WAF(웹 방화벽)가 동작한다. Paranoia Level은 기본값인 1로 설정되어있다. 이 WAF를 우회할 수 있냐고 묻는다. GET 방식으로 전달받은 id와 pw에서 prob, _, ., (), admin을 필터링한다. 그 뒤 쿼리를 통한 결과를 배열로 가져오는데, id의 값이 참이면 문제가 풀린다고 한다. 기본적인 SQL Injection 구문인 ' or 1=1#을 id에 입력해보면 접근이 제한되었다. 이 외의 구문들을 통해 시도해본 결과, 웬만한 SQL Injection 구문은 다 필터링하는 것 같다. https://github.com/SpiderLabs/owasp-modsecurity-crs/issues/1181에는 CRS v3.1.0을 우회하는 방법을 참고하였다. 이 방법..
-
<Webhacking.kr> old-26Wargame/Webhacking.kr 2021. 12. 12. 22:05
old-26 view-source를 통해 페이지 소스 코드를 살펴보면 view-source GET 방식으로 전달받는 id에서 "admin"이란 문자열을 필터링한다. 만약 "admin" 문자열이 포함되어있으면 "no!"라는 메시지를 출력하고 종료된다. 그리고 id는 id를 urldecode()로 처리한 값이다. 이 값이 "admin"과 같다면 문제가 풀린다. URL은 ASCII 코드를 이용하고 인터넷을 통해서만 전송할 수 있다.(#을 %23으로 하는 것처럼) 따라서, 브라우저는 전송 데이터를 URL encoding하여 전송하게 된다. 또한 PHP 문서에 따르면, $_GET 및 $_REQUEST는 자동으로 urldecode()를 수행한다고 나와있다. 그럼 이 문제에서는 urldecode()를 2번 하게 된다..
-
<Lord of SQL Injection> alienWargame/Lord of SQL Injection 2021. 12. 6. 22:46
alien admin, and, or, if, coalesce, case, _, ., prob, time을 필터링한다. 쿼리가 2개 나와있다. 하나는 싱글 쿼터(')가 없고, 하나는 싱글 쿼터가 있다. 아래 조건문을 살펴보면 첫 번째 쿼리는 "admin"과 값이나 타입 하나라도 다르면 "sandbox1"을 출력하고 종료한다. 또, "admin"과 같으면 "sandbox2"를 출력하고 종료한다. 두 번째 쿼리는 "admin"과 같으면 "sandbox"를 출력하고 종료한다. 또 한번 더 같으면 문제가 풀린다. 우선, 주석을 사용해 두 쿼리를 동일한 결과를 출력하게 만들 수 있다. query 1 : select id from prob_alien where no=1 union select 1#' union se..