728x90
문제 풀이
기본 페이지다. 이전 Robot 문제와 같이 robots.txt를 확인해주자.
이번엔 /c0re_system.php라는 페이지로 이동해야한다.
이번엔 클릭을 무수히 많이 해야한다. 하지만 약 15초의 시간 제한이 걸려있다.
시간이 되면 you lose라는 alert 창과 함께 index페이지로 이동한다.
자바스크립트는 웹 브라우저 엔진 위에서 돌아간다. 따라서 설정을 통해 자바스크립트의 사용을 끌 수 있다. 자바스크립트를 끄고 천천히 분석해보자.
`설정 - 개인 정보 보호 및 보안 - 사이트 설정 - 자바스크립트`를 통해 자바스크립트를 끌 수 있다.
개발자 도구를 통해 해당 페이지 소스를 확인해봤다. head에 자바스크립트 파일을 받아오는 것을 확인할 수 있다. `개발자 도구 - 소스`로 이동해보자
하지만 이동했을 때 js 폴더와 함께 robots.txt 파일이 보이지 않는다.
그 이유는 네트워크 동작 원리때문이다.
서버는 모든 파일을 한 번에 다 주지 않는다. html 파일을 제공하고 그 안에 이미지 파일이나 스크립트 파일들은 클라이언트가 이후에 요청하면 제공한다.
버프 스위트를 통해서 이 과정을 살펴볼 수 있다.
즉, 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`을 수정한 후 공격하면 문제가 풀릴 것이다.
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 |