K
KRYFT Problem Bank
보안 어려움 이론

웹 취약점 분석 보고서

웹 애플리케이션 보안 취약점 분석

45분
85점
#3746

문제 설명

주어진 웹 애플리케이션 코드에서 보안 취약점을 찾고 수정 방안을 제시하세요.

분석 대상 코드


// 로그인
app.post("/login", (req, res) => {
  const { username, password } = req.body;
  const query = `SELECT * FROM users WHERE username="${username}" AND password="${password}"`;
  db.query(query, (err, user) => {
    if (user) {
      req.session.user = user;
      res.redirect("/dashboard");
    }
  });
});

// 프로필 조회
app.get("/profile", (req, res) => {
  const userId = req.query.id;
  const user = db.query(`SELECT * FROM users WHERE id=${userId}`);
  res.send(`

Welcome ${user.name}

`); }); // 파일 다운로드 app.get("/download", (req, res) => { const filename = req.query.file; res.download(`./uploads/${filename}`); }); // 비밀번호 변경 app.post("/change-password", (req, res) => { const newPassword = req.body.password; db.query(`UPDATE users SET password="${newPassword}" WHERE id=${req.session.userId}`); res.send("Password changed"); });

분석 항목

  • OWASP Top 10 취약점
  • 인증/인가 문제
  • 입력 검증
  • 세션 관리

제출물

  • 발견된 취약점 목록
  • 위험도 평가 (CVSS)
  • 공격 시나리오
  • 수정된 코드

답안 작성