[CTF] Blackhat 2022 CTF - naruto

2022. 10. 2. 20:39정보보안/CTFLOG

반응형

대회가 끝나고 적는 라이트업이라 서버가 내려가서 정확한 문제 이름

하고 사이트 사진이 없다. 양해바람..

 

사이트 들어가면 나루토 사진이 있길래 그냥 기억나는대로 아무거나 썻다

$flag=getenv("FLAG");
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if(isset($_POST["email"])&&isset($_POST["pass"])){
        if($_POST["email"]==="admin@naruto.com"){
            $x=$_POST["test"];
            $inp=preg_replace("/[^A-Za-z0-9$]/","",$_POST["pass"]);
            if($inp==="SuperSecRetPassw0rd"){
                die("Hacking Attempt detected");
            }
            else{
                if(eval("return \$inp=\"$inp\";")==="SuperSecRetPassw0rd"){
                    echo $flag;
                }
                else{
                    die("Pretty Close maybe ?");
                }
            }

        }
    }
}

우선 사이트에 들어가면 나루토 사진과 함께 로그인 창이 뜨는게 처음에는 admin으로 들어가라길래 단순한 sqli이겠거니 

싶었다. 하지만 입력하는 어떠한 쿼리도 작동 되지 않았고 f12로 소스를 확인했다.

그러던중 저 코드를 찾게 되었는데.

 

문제가 생긴다.

 

1. $x라는 변수는 뭐지? 

2. 이메일에 admin@naruto.com 가 들어가고 $inp에 SuperSecRetPassw0rd 라는 값이 들어가면 분명 풀려야 하는데

풀리지 않음

 

이 문제를 풀려면 아래에 있는 eval코드를 잘 봐야한다 더블 쿼터에 담겨있고 eval함수를 거쳐 나온값이 SuperSecRetPassw0rd이여야 하므로, x를 사용해서 문제를 해결해야한다.

x는 null이므로 

 

SuperSecRetPassw0rd$x를 적게 된다면 위의 if문의 die를 피하게 되면서 flag를 얻을수있다.

 

반응형

'정보보안 > CTFLOG' 카테고리의 다른 글

[CTF] LOGCON - warmup  (0) 2023.01.17
[CTF] SECCON CTF 2022 - skipinx  (0) 2022.11.13
[WARGAME] los.rubiya.kr - Nightmare  (0) 2022.08.14
[WARGAME] los.rubiya.kr - zombie_assassin  (0) 2022.08.14
[WARGAME] los.rubiya.kr - succubus  (0) 2022.08.14