본문 바로가기
CTF

[Square CTF 2021] Huge Primes

by skyepodium 2022. 6. 12.

1. 개요

자바스크립트 부동 소수점 문제

문제 링크

 

2. 분석

1) 확인

숫자 2개의 곱이 22952152323332505688670761214671498225451684330137990990356473040741684014997701799009910066964917896400501477

이 되어야 한다고 합니다.

2) 부동 소수점

자바스크립트에서는 모든 숫자가 실수이며, Double-precision floating-point format 을 사용합니다. 

 

이에 따라 표현 가능한 범위는 -(2^53 - 1) ~ 2^53 -1 

 

53 비트를 넘어가면 모두 0으로 표시됩니다.

이 범위를 넘어가는 수는 모두 2의 배수로 표현됩니다. 따라서 홀수도 짝수로 표현됩니다.

 

3. exploit

문제에서 주어진 숫자 22952152323332505688670761214671498225451684330137990990356473040741684014997701799009910066964917896400501477 는 2^53 - 1을 넘어간 수이며 2의 배수로 표현가능합니다.

 

따라서, a = n / 2, b = 2를 넣으면 통과 가능합니다.

 

 

 

참고 

BigInt 사용해도 안된다.

'CTF' 카테고리의 다른 글

[Square CTF 2017] little-doggy-tables  (0) 2022.06.12
[Square CTF 2017] Password checker  (0) 2022.06.12
[Grey Cat The Flag 2022] Too Fast  (0) 2022.06.11
[HSCTF 9] vending-machine  (0) 2022.06.11
[HSCTF 9] squeal  (0) 2022.06.10