Wargame/Root-me = Web - Client

<Root-me> Javascript - Authentication 2

지우친구 웅이 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 = TheSplit[1];
            if (username == TheUsername && password == ThePassword)
            {
                alert("Vous pouvez utiliser ce mot de passe pour valider ce challenge (en majuscules) / You can use this password to validate this challenge (uppercase)");
            }
        }
        else
        {
            alert("Nope, you're a naughty hacker.")
        }
    }
}

TheSplit은 TheLists의 배열을 ':'을 기준으로 구분한다.

TheUsername은 TheSplit[0]로 "GOD"을 뜻한다.

ThePassword는 TheSplit[1]로 "HIDDEN"을 뜻한다.

 

그리고 username이 TheUsername과 같고, password가 ThePassword와 같으면

이 비밀번호의 대문자로 검증할 수 있다고 한다.

 

따라서, 문제 페이지에서 ThePassword인 "HIDDEN"을 입력하면 문제를 해결할 수 있다.