본문 바로가기
분류 전/CTF

[2024 IS_LAB CTF] Robots REVENGE 풀이

by jwcs 2024. 2. 5.
728x90

문제 풀이

/

기본 페이지다. 이전 Robot 문제와 같이 robots.txt를 확인해주자.

 

/robots.txt

이번엔 /c0re_system.php라는 페이지로 이동해야한다.

 

/c0re_system.php

이번엔 클릭을 무수히 많이 해야한다. 하지만 약 15초의 시간 제한이 걸려있다.

시간 제한

시간이 되면 you lose라는 alert 창과 함께 index페이지로 이동한다.

자바스크립트는 웹 브라우저 엔진 위에서 돌아간다. 따라서 설정을 통해 자바스크립트의 사용을 끌 수 있다. 자바스크립트를 끄고 천천히 분석해보자.

`설정 - 개인 정보 보호 및 보안 - 사이트 설정 - 자바스크립트`를 통해 자바스크립트를 끌 수 있다.

개발자도구 - 요소

개발자 도구를 통해 해당 페이지 소스를 확인해봤다. head에 자바스크립트 파일을 받아오는 것을 확인할 수 있다. `개발자 도구 - 소스`로 이동해보자

개발자 도구 - 소스

하지만 이동했을 때 js 폴더와 함께 robots.txt 파일이 보이지 않는다.

 

그 이유는 네트워크 동작 원리때문이다.

서버는 모든 파일을 한 번에 다 주지 않는다. html 파일을 제공하고 그 안에 이미지 파일이나 스크립트 파일들은 클라이언트가 이후에 요청하면 제공한다.

res
robots.txt req
png req

버프 스위트를 통해서 이 과정을 살펴볼 수 있다.

즉, js폴더와 함께 robots.txt가 보이지 않았던 이유는 자바스크립트를 꺼서 사용되지 않았기 때문이다. 그럼 다시 킨 후 해당 파일을 다운로드 받아와서 분석해보자.

 

let HP = 10000000;
function attack() {
    HP -= 1;
    updateHP();
    if (HP <= 0) fetchFlag();
}

function updateHP() {
    document.getElementById('HP').textContent = HP;
    setTimeout(() => {
        alert(`You lose..`);
        location.replace('/');
    }, 10000);
}

window.onload = function () {
    updateHP();
}

function fetchFlag() {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
            var response = JSON.parse(xhr.responseText);
            alert(response.flag);
        }
    };
    xhr.open('GET', '', true);
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xhr.send();
}

attack() 부분에서 `HP -= 1`을 수정한 후 공격하면 문제가 풀릴 것이다.

 

flag

 

728x90
반응형

'분류 전 > CTF' 카테고리의 다른 글

[2024 IS_LAB CTF] meta-data 풀이  (0) 2024.02.07
[2024 IS_LAB CTF] Under Construction 풀이  (0) 2024.02.05
[2024 IS_LAB CTF] Robots 풀이  (0) 2024.02.05
[Sunshine] beepboop 풀이  (0) 2023.10.14
[Sunshine] Hotdog Stand 풀이  (0) 2023.10.10