Wargame
-
<Webhacking.kr> old-29Wargame/Webhacking.kr 2021. 12. 21. 23:50
old-29 파일을 업로드할 수 있다. 파일 아무거나 제출하면 제출한 시간, 자신의 IP 주소, 파일명을 출력한다. FLAG는 다른 테이블에 있다는 것으로 보아, 현재 페이지는 제출한 시간, 자신의 IP 주소, 파일명을 칼럼으로 가지는 하나의 테이블인 것 같다. 페이지 소스 코드를 살펴보면 POST 방식으로 제출한다. Burp Suite로 time, ip, file이 삽입되는 순서를 확인할 수 있다. INSERT INTO 테이블이름 VALUES ('a', 'b', 'c'), ('d', 'e', 'f')의 형태로 다수의 데이터를 한 번에 넣을 수 있다. 이 특징을 이용하여 순서를 먼저 알아보기 위해 파일이 정상적으로 업로드되는 것으로 보아 INSERT INTO 테이블이름 VALUES (파일 이름, 제출한 ..
-
<Root-me> Javascript - Obfuscation 3Wargame/Root-me = Web - Client 2021. 12. 20. 22:53
비밀번호를 입력하라고 한다. 페이지 소스 코드를 보면 function dechiffre(pass_enc){ var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65"; var tab = pass_enc.split(','); var tab2 = pass.split(','); var i,j,k,l=0,m,n,o,p = ""; i = 0; j = tab.length; k = j + (l) + (n=0); n = tab2.length; for(i = (o=0); i < (k = j = n); i++ ){ o = tab[i-l]; p += String.fromCharCode((o = tab2[i])); if(i == 5) break;} for(i = (..
-
<Root-me> Javascript - Obfuscation 2Wargame/Root-me = Web - Client 2021. 12. 19. 17:35
빈 페이지만 출력된다. 페이지 소스 코드를 살펴보면 var pass = unescape("unescape%28%22String.fromCharCode%2528104%252C68%252C117%252C102%252C106%252C100%252C107%252C105%252C49%252C53%252C54%2529%22%29"); 개발자 도구 Console 탭에 unescape()문을 그대로 입력하면 결과로 나온 문자열에서 다시 unescape()문을 Console 탭에 입력하면 String.fromCharCode()문을 Console 탭에 입력하면 더이상 함수의 형태가 아닌 일반 문자열이 출력된다. 이 값을 문제 페이지에 입력하면 문제를 해결할 수 있다. ※ unescape() : URL 인코딩 문자열을 AS..
-
<Root-me> Javascript - Obfuscation 1Wargame/Root-me = Web - Client 2021. 12. 19. 17:17
비밀번호를 입력하라고 한다. 페이지 소스 코드를 살펴보면 /* */ h는 입력받는 값이다. 이 h가 unescape(pass)와 같으면 "패스워드가 승인되었다"라는 메시지를 띄우는 것으로 보아 unescape(pass)가 찾는 비밀번호인 것 같다. unescape(pass)를 해보면 "cpasbiendurpassword"이 나온다. 이 값을 문제 페이지에 입력해보면 문제가 해결된다.
-
<Root-me> Javascript - WebpackWargame/Root-me = Web - Client 2021. 12. 19. 16:16
오리와 원앙 사진을 볼 수 있다. 문제 제목으로 보아 Webpack에 관련된 문제인 것 같다. Webpack은 모듈 번들러로, 각각의 리소스 파일을 합쳐서 사용자에게 전달하기 좋은 형태로 만들어주는 역할을 한다. 모듈은 각 리소스 파일을 뜻하고, 번들은 웹 팩 실행한 후 나오는 결과 파일을 말한다. 개발자 도구 Sources 탭을 보면 webpack:// 부분을 찾을 수 있다. 그리고 내부에 "YouWillNotFoundThisRouteBecauseItIsHidden.vue"라는 파일을 찾을 수 있다. 그리고 빨간 줄 부분에 flag 값이 들어있다. 이 값을 이용해 문제 페이지에서 입력하면 문제를 해결할 수 있다.
-
<Webhacking.kr> old-25Wargame/Webhacking.kr 2021. 12. 19. 01:45
old-25 위 내용은 리눅스에서 "ls -l"을 사용한 것으로 보인다. URL Query에 "?file=hello"으로 보아 GET 방식으로 파일명을 전달하는 것 같다. URL Query에 "?file=flag"을 입력하면 FLAG가 코드 안에 있다는 메시지를 출력한다. php 코드는 서버 내에 저장되어 있다. 이런 경우 "LFI vulnerability" 기법을 수행할 수 있다. LFI(Local File Inclusion) 취약점은 파일이 공격 대상의 서버에 위치할 때 사용할 수 있는 방법이다. 해당 취약점은 php로 만들어진 웹 사이트에서 include, require, fopen 등의 함수를 사용해 받아온 입력값을 경로에 추가하기 때문에 발생한다. PHP 버전 5 전에는 경로 값에 NULL By..
-
<Root-me> Javascript - Authentication 2Wargame/Root-me = Web - Client 2021. 12. 18. 23:39
로그인 버튼을 누르면 username을 입력하는 창이 뜬다. 페이지 소스 코드를 살펴보면 "login.js"를 찾을 수 있다. "login.js"를 살펴보면 function connexion(){ var username = prompt("Username :", ""); var password = prompt("Password :", ""); var TheLists = ["GOD:HIDDEN"]; for (i = 0; i < TheLists.length; i++) { if (TheLists[i].indexOf(username) == 0) { var TheSplit = TheLists[i].split(":"); var TheUsername = TheSplit[0]; var ThePassword = TheSp..