본문으로 건너뛰기

Hash Length Extension: MD5/SHA1 서명 우회 핵심

웹에서 hash(secret || msg) 형태의 서명을 쓰면 length extension에 취약합니다. 공격자는 원본 해시와 msg 길이를 추정해 추가 데이터를 붙인 새 해시를 만들 수 있어요.

왜 가능할까?

  • MD5/SHA1은 Merkle–Damgård 구조
  • 내부 상태(=해시)가 다음 블록의 IV로 재사용
  • 패딩 규칙을 맞추면 “중간 상태”에서 이어서 해시 가능

공격 흐름(CTF 기본 루틴)

  • 알려진 msghash 확보
  • secret 길이를 범위로 가정(예: 8~32)
  • 패딩 + ;admin=true 같은 payload 추가
  • 해시 재계산 후 서버 검증 통과

실전 방어

  • HMAC(hash, secret, msg) 사용
  • 길이 숨김이 아니라 구조 변경이 답

도구는 hashpump가 유명하고, CTF에선 직접 구현도 자주 나옵니다. 핵심은 “해시를 서명으로 쓰지 마라”입니다.