Quadratic Residues

2023. 2. 8. 07:55·Wargame/Cryptohack
728x90
반응형

1. intro

2. code 및 분석

2.1.  code

N/A

 

2.2. 분석

나머지 계산에서 곱셈과 나눗셈에 대해서 알아보았지만, 나머지를 제곱근으로 표현하는 것이 무엇을 의미할까.

p = 29라고 가정해보자.

a^2 = 5 mod 29를 계산해보면 a는 11이 됨을 알 수 있다.

(앞서 작성한 코드를 조금 수정해서 사용)

┌──(kali㉿kali)-[~/Downloads]
└─$ python solve.py
29
['1 : 1', '2 : 4', '3 : 9', '4 : 16', '5 : 25', '6 : 7', '7 : 20', '8 : 6', '9 : 23', '10 : 13', '11 : 5', '12 : 28', '13 : 24', '14 : 22']

그러므로 11은 5의 제곱근이라고 할 수 있고

a = 11 , a^2 = 5

라 표현할 수 있다.

 

이제 제곱근이 18인 경우에 대해서 알아보자.

우리는 이것을 찾기 위해 a = 1부터 a = p-1까지 계산해볼 것이다.

 

만일 제대로 코딩되었다면 a^2 = 18이 되는 a 값을 찾을 수 없을 것이다.

 

이렇게 제곱근이 존재하면 제곱 잉여, 존재하지 않으면 비제곱 잉여라고 한다.

 

문제에서, p = 29이고 a가 14, 6, 11일 때 둘은 비제곱 잉여, 하나는 제곱 잉여다.

여기서 제곱 잉여를 찾고, 최소 값이 flag이다.

 

3. exploit

앞서 작성한 코드를 적용해보면

n = int(input())
a = []

for i in range(1,(1+n)//2,1):
    a.append((i**2)%n)

print(a)

 

┌──(kali㉿kali)-[~/Downloads]
└─$ python solve.py
29
[1, 4, 9, 16, 25, 7, 20, 6, 23, 13, 5, 28, 24, 22]

가 되고, 해당하는 것은 6 밖에 없다.

이는 8번째 값이므로 제곱 잉여는 8 또는 -8이 된다.

 

최솟값이라고 해서 -8일 줄 알았는데 그냥 8을 넣었더니 풀림 ㅋ

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Wargame > Cryptohack' 카테고리의 다른 글

Network Attacks  (0) 2023.02.13
Legendre Symbol  (0) 2023.02.13
Modular Inverting  (0) 2023.02.06
Modular Arithmetic 2  (0) 2023.02.03
Modular Arithmetic 1  (0) 2023.02.03
'Wargame/Cryptohack' 카테고리의 다른 글
  • Network Attacks
  • Legendre Symbol
  • Modular Inverting
  • Modular Arithmetic 2
wyv3rn
wyv3rn
아저씨의 흔한 취미. wyv3rn#1249
  • wyv3rn
    think storage
    wyv3rn
  • 전체
    오늘
    어제
    • 분류 전체보기 (516) N
      • To do list (7)
        • Doing (1)
        • Complete (6)
      • Diary (35)
      • Tips & theory (75) N
      • Kernel Exploit (27)
        • Theory (15)
        • Exercise (5)
      • File Structure (6)
      • Wargame (321) N
        • pwn.college (34)
        • Dreamhack (155) N
        • pwnable.kr (15)
        • Lord of Sqlinjection (4)
        • Cryptohack (20)
        • Root me (27)
        • CodeEngn (4)
        • Exploit Education (22)
        • ROP Emporium (8)
        • H4C (10)
        • Hackerchool (22)
      • CTF (44)
        • Solved (42)
        • Unsolved (2)
      • Script (0)
      • RubiyaLap (0)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

    • PWN wargame 모음 (및 느낀점)
    • 비공개 글들에 대해.
    • 뭐라도 하나 얻어가시길...
  • 인기 글

  • 태그

    pwntools
    dreamhack
    libc
    tcache
    32bit
    Format String Bug
    _IO_FILE
    vtable
    root
    la ctf
    pwnable.kr
    CANARY
    x64
    Me
    FSB
    cryptohack
    heap
    BOF
    x86
    root-me
    lob
    phoenix
    hackerschool
    docker
    rop
    RTL
    64bit
    ROOT ME
    Buffer Overflow
    exploit education
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
wyv3rn
Quadratic Residues
상단으로

티스토리툴바