Hash Length Extension: MD5/SHA1 서명 우회 핵심
웹에서 hash(secret || msg) 형태의 서명을 쓰면 length extension에 취약합니다. 공격자는 원본 해시와 msg 길이를 추정해 추가 데이터를 붙인 새 해시를 만들 수 있어요.
왜 가능할까?
- MD5/SHA1은 Merkle–Damgård 구조
- 내부 상태(=해시)가 다음 블록의 IV로 재사용
- 패딩 규칙을 맞추면 “중간 상태”에서 이어서 해시 가능
공격 흐름(CTF 기본 루틴)
- 알려진
msg와hash확보 - secret 길이를 범위로 가정(예: 8~32)
- 패딩 +
;admin=true같은 payload 추가 - 해시 재계산 후 서버 검증 통과
실전 방어
HMAC(hash, secret, msg)사용- 길이 숨김이 아니라 구조 변경이 답
도구는 hashpump가 유명하고, CTF에선 직접 구현도 자주 나옵니다. 핵심은 “해시를 서명으로 쓰지 마라”입니다.