ctf

日练(i春秋)

rsa256,

Posted by xyeee on September 6, 2018

ctf小练

rsa256

题目下载地址

下载解压后发现有四个文件

➜  fujian ls
encrypted.message1  encrypted.message2  encrypted.message3  public.key

公钥和三个密文文件

ok,查看公钥

➜  fujian openssl rsa -pubin -in public.key -text -modulus
Public-Key: (256 bit)
Modulus:
    00:d9:9e:95:22:96:a6:d9:60:df:c2:50:4a:ba:54:
    5b:94:42:d6:0a:7b:9e:93:0a:ff:45:1c:78:ec:55:
    d5:55:eb
Exponent: 65537 (0x10001)
Modulus=D99E952296A6D960DFC2504ABA545B9442D60A7B9E930AFF451C78EC55D555EB
writing RSA key
-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhANmelSKWptlg38JQSrpUW5RC1gp7npMK
/0UceOxV1VXrAgMBAAE=
-----END PUBLIC KEY-----

模数M比较小 ,尝试直接分解,factor.db

分解成功,解决,下面解密

利用RSAtool(可以参考ctf-wiki)生成私钥

➜  rsatool git:(master) python rsatool.py -f PEM -o private.pem -p 302825536744096741518546212761194311477 -q 325045504186436346209877301320131277983
Using (p, q) to initialise RSA instance

n =
d99e952296a6d960dfc2504aba545b9442d60a7b9e930aff451c78ec55d555eb

e = 65537 (0x10001)

d =
4547b732cbc3527104cb57c4728d6899b44c4994fae2713d6b594bc0f522a41

p = 302825536744096741518546212761194311477 (0xe3d213b0a3c9551f9fb1eb8d7c3daf35)

q = 325045504186436346209877301320131277983 (0xf4897caaba80236bdc1b59385c4bf49f)

Saving PEM as private.pem

解密

➜  fujian openssl rsautl -decrypt -inkey private.pem -in encrypted.message1 -out flag1
➜  fujian openssl rsautl -decrypt -inkey private.pem -in encrypted.message2 -out flag2 
➜  fujian openssl rsautl -decrypt -inkey private.pem -in encrypted.message3 -out flag3

然后将三个文件合并,或者手动拼起来

➜  fujian cat flag
flag{3b6d3806-4b2b-11e7-95a0-000c29d7e93d}

Tips:合并文件部分

➜  fujian cat  flag1 flag2 flag3 > flag
➜  fujian cat flag
flag{3b6d3806-4b2b
-11e7-95a0-
000c29d7e93d}

如何去掉换行符呢

➜  fujian vim flag

然后:%s/\n//g

➜  fujian cat flag
flag{3b6d3806-4b2b-11e7-95a0-000c29d7e93d}

稳了