ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • NCSC CTF 2019 [Crypto]crypto1 write up
    CTF write_up/NCSC CTF 2019. 2. 8. 23:17

    파일에서 주어진 값은 다음과 같습니다.

    1

    2

    3

    n = 93587363287156334812299342740228308093795365883388785316655388313363539378259286962127927636210532538900920198550544117072392764271544799515433876778458261254334996572307192587527399669983018757929928245773886731002488376926853218802124573883439481717837639393599516660701804298344896143670444749710014423277

    e = 65537

    c = 67083459704286681676098448825849577847414325760004160049861816099014269643122295270222174890231909719047958794872612451518578654361686158296668098092952315389811387415848446114065690222102850053484168984940645227007522005971538601337318219947760134136368820497572841289403685595806097877620669396518849477527

     

    해당 암호문을 복호화 해달라고 하는데 이문제를 해결 하기 위해서 알아야 하는 공식은

    선택 암호문 공격이라는 기법입니다.

     

    암호문의 곱을 복호화하면 평문의 곱이 나온다는 것입니다.

     

    2 암호화 해서 c값과 곱하고 그것을 복호화 후에 2 나누면 평문이 나올 것입니다.

     

    다음과 같은 파이썬 코드를 이용해서 flag값을 받아오겠습니다.

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    from pwn import *

     

    = remote('149.202.55.236'1337)

     

    n1 = 93587363287156334812299342740228308093795365883388785316655388313363539378259286962127927636210532538900920198550544117072392764271544799515433876778458261254334996572307192587527399669983018757929928245773886731002488376926853218802124573883439481717837639393599516660701804298344896143670444749710014423277

    n2 = 65537

    n3 = 67083459704286681676098448825849577847414325760004160049861816099014269643122295270222174890231909719047958794872612451518578654361686158296668098092952315389811387415848446114065690222102850053484168984940645227007522005971538601337318219947760134136368820497572841289403685595806097877620669396518849477527

     

    result = n3 * pow(2, n2, n1)

     

    p.sendlineafter(':'str(result))

    p.recvuntil('!\n')

     

    print hex(int(p.recvline(), 16/ 2)[2:].decode("hex")

     

    Flag : securinets{m4K1nG_a_g00d_cH01s3_iS_uS3fuL_s0m3t1m3S}

    댓글

Designed by Tistory.