Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Django
- vscode
- basic4
- 장고vscode
- csaw
- webhacking.kr문제풀이
- 웹해킹
- 코로나
- rev-basic-4
- rev-basic-6
- csaw 2018
- 바이러스
- web
- 해킹문제
- 해커
- 코로나바이러스
- reversing
- jango
- 해킹
- rev-basic-3
- 장고
- 취약점점검
- 모세포
- dreamhack
- 백준
- 리버싱
- AndroidOS
- 파이썬웹
- djangovscode
- 파이썬
Archives
- Today
- Total
Kilkat
[dreamhack] Secure Mail 본문
문제 설명을 확인해보면 6자리의 숫자로 이루어진 보안 메일을 해결하면 Flag를 획득할 수 있을 것으로 예상됨
secure-mail.html 브라우저로 열어서 확인해보면 최대 6자리의 비밀번호를 검증하는 로직으로 구성된 것을 확인할 수 있음
vscode로 secure-mail.html 열어서 코드를 확인해보면 onclick에 존재하는 _0x9a220 function이 존재하는데, 내용은 난독화 되어 있어서 확인이 힘듦
따라서 6자리 숫자로 이루어진 비밀번호 조합을 brute force하여 Flag를 획득하는 방법으로 진행함
(function bruteForceBirthdayPassword() {
let foundPassword = false;
const startYear = 1990;
const endYear = 2025;
window.alert = function (msg) {
if (msg !== 'Wrong') {
console.log(`비밀번호를 찾았습니다! 메시지: ${msg}`);
foundPassword = true;
throw new Error(`브루트포싱 완료: ${msg}`);
}
};
function tryBrute(pwd) {
document.querySelector('#pass').value = pwd;
document.querySelector('button').click();
}
function isValidDate(year, month, day) {
const date = new Date(year, month - 1, day);
return (
date.getFullYear() === year &&
date.getMonth() + 1 === month &&
date.getDate() === day
);
}
try {
for (let year = startYear; year <= endYear; year++) {
const shortYear = year % 100;
for (let month = 1; month <= 12; month++) {
for (let day = 1; day <= 31; day++) {
if (foundPassword) break;
if (!isValidDate(year, month, day)) continue;
const password = `${shortYear.toString().padStart(2, '0')}${month.toString().padStart(2, '0')}${day.toString().padStart(2, '0')}`;
console.log(`시도 중... 비밀번호: ${password}`);
tryBrute(password);
}
if (foundPassword) break;
}
if (foundPassword) break;
}
} catch (e) {
console.log(e.message);
}
})();
핵심은 YYMMDD로 이루어진 형식으로 brute force가 진행되어야 하고, 비밀번호가 틀리는 경우 팝업되는 alert가 무시되어야 하며, 조건에 맞는 비밀번호가 입력될 시 brute force가 멈추고 해당 값이 반환되어야 함
성공!
'Security > reverse engineering' 카테고리의 다른 글
[dreamhack] Simple Patch Me (0) | 2025.02.10 |
---|---|
[dreamhack] Inject ME!!! (1) | 2025.02.09 |
[dreamhack] rev-basic-6 (0) | 2024.12.25 |
[dreamhack] rev-basic-4 (0) | 2024.12.25 |
[dreamhack] rev-basic-3 (0) | 2024.12.10 |
Comments