2021-07-09
[WUSTCTF2020]大數計算
題目
flag等于 wctf2020{Part1-Part2-Part3-Part4} 每一Part都為數的十六進制形式(不需要0x),并用 '-' 連接 Part1 = 2020*2019*2018* ... *3*2*1 的前8位 Part2 = 520^1314 + 2333^666 的前8位 Part3 = 宇宙終極問題的答案 x,y,z絕對值和的前8位 Part4 = 見圖片附件,計算結果乘上1314解題
第一部分
得到前八位為:38609695
十六進制:24d231f
第二部分
print(pow(520,1314)+pow(2333,666))前八位:67358675
十六進制:403cfd3
第三部分
宇宙終極問題答案
42=(-805387388120759743 + 804357581458175153 + 126021232973356313。
所以,
print(80538738812075974+80435758145817515+12602123297335631)前八位:17357662
十六進制:108db5e
第四部分
print((22*22+36)*1314)得到:683280
十六進制:a6d10
答案
flag{24d231f-403cfd3-108db5e-a6d10}
壞蛋是雷賓
標題
老牌刺客之王混進了女王的住所。一天,女王得到了一個匿名舉報,說她的侍衛里有一個刺客,叫做Rabin,而他的信息就在一份文件里,文件中有附帶一個Pk,是523798549,密文是162853095,校驗碼二進制值是110001,根據說明是放在明文后一起加密的,明文與密文長度相同。加密算法和這位老牌刺客同名。快拯救女王,答案是求得的明文,進行32位md5小寫哈希字符串,提交即可。
解題
Rabin加密(整理來源)
Rabin加密是一種基于模平方和模平方根的非對稱加密算法。
1、加密過程
設私鑰p q為兩個素數,公鑰n=p*q,對于明文m和密文c,定義一下加密過程:c=m2 mod n
2、解密過程
根據以下公式計算出mp和mq:
mp = c((1/4)(p+1)) mod p
mq = c((1/4)(q+1)) mod q
根據以下公式推導出一個可用的yp和yq:
yp * p + yq * q = 1
根據以下公式計算最終結果:
r = (yp * p * mq + yq * q * mp) mod n
-r = n - r
s = (yp * p * mq - yq * q * mp) mod n
-s = n - s
可以證明每一個密文對應四個原文,而真正的原文一般需要根據驗證碼來對應。
已知n和c,分解n得到p和q
import gmpy2n = 523798549 c = 162853095 p = 10663 q = 49123mp = pow(c,(p+1)//4,p) mq = pow(c,(q+1)//4,q) yq = gmpy2.invert(q, p) yp = gmpy2.invert(p, q) r = (yp * p * mq + yq * q * mp) % n _r = n - r s = (yp * p * mq - yq * q * mp) % n _s = n-s print(bin(r)[2:],bin(_r)[2:],bin(s)[2:],bin(_s)[2:])得到
10010011100100100101010110001 1100110001100011110101100100 110111001100000100101111001 11000010100100111111010011100校驗碼為:110001
所以明文為:10010011100100100101010
轉十進制:4835626
MD5:ca5cec442b2734735406d78c88e90f35
答案
flag{ca5cec442b2734735406d78c88e90f35}
[HDCTF2019]together
題目
myflag1
R3Noy6r3WLItytAmb4FmHEygoilucEEZbO9ZYXx5JN03HNpBLDx7fXd2fl+UL5+11RCs/y0qlTGURWWDtG66eNLzGwNpAKiVj6I7RtUJl2Pcm3NvFeAFwI9UsVREyh7zIV6sI9ZP8l/2GVDorLAz5ULW+f0OINGhJmZm8FL/aDnlfTElhQ87LPicWpXYoMtyr6WrxjK6Ontn8BqCt0EjQ7TeXZhxIH9VTPWjDmFdmOqaqdVIT+LZemTgLNESwM5nn4g5S3aFDFwj1YiDYl0/+8etvKfOrfoKOwR0CxsRHagwdUUTES8EcHLmMGCxCkDZn3SzmmA6Nb3lgLeSgG8P1A==myflag2
O+rRCXI3aTB6P1rYIOPUdalUp6ujpwEq4I20CoWA+HIL8xxGtqY6N5gpr0guZv9ZgOEAMFnBxOqMdVNnB9GgnhmXtt1ZWydPqIcHvlfwpd/Lyd0XSjXnjaz3P3vOQvR71cD/uXyBA0XPzmnTIMgEhuGJVFm8min0L/2qI7wg/Z7w1+4mOmi655JIXeCiG23ukDv6l9bZuqfGvWCa1KKXWDP31nLbp0ZN2obUs6jEAa1qVTaX6M4My+sks+0VvHATrAUuCrmMwVEivqIJ/nS6ymGVERN6Ohnzyr168knEBKOVj0FAOx3YLfppMM+XbOGHeqdKJRLpMvqFXDMGQInT3w==pubkey1.pem
-----BEGIN PUBLIC KEY----- MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQB1qLiqKtKVDprtS+NGGN++ q7jLqDJoXMlPRRczMBAGJIRsz5Dzwtt1ulr0s5yu8RdaufiYeU6sYIKk92b3yygL FvaYCzjdqBF2EyTWGVE7PL5lh3rPUfxwQFqDR8EhIH5x+Ob8rjlkftIjHTBt1ThJ JXvDBumXpQKGcBIknRaR9dwR1q8GU58/gIk5ND3eCTAadhrhLByWkHbFArxalx4Q q8s2ZUe8lDc/N6V93EOFjbKbqqqtDmhniF6jdXQDAIwWTpx6+jmzxlCJoVHd2MBs ZCcQhvklWtuKz4IYL4+iUpMKGHlhY1vCqFx2EzD4XIljFLP9rk7+9+CoyTuIVL/D AgMACR0= -----END PUBLIC KEY-----pubkey2.pem
-----BEGIN PUBLIC KEY----- MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQB1qLiqKtKVDprtS+NGGN++ q7jLqDJoXMlPRRczMBAGJIRsz5Dzwtt1ulr0s5yu8RdaufiYeU6sYIKk92b3yygL FvaYCzjdqBF2EyTWGVE7PL5lh3rPUfxwQFqDR8EhIH5x+Ob8rjlkftIjHTBt1ThJ JXvDBumXpQKGcBIknRaR9dwR1q8GU58/gIk5ND3eCTAadhrhLByWkHbFArxalx4Q q8s2ZUe8lDc/N6V93EOFjbKbqqqtDmhniF6jdXQDAIwWTpx6+jmzxlCJoVHd2MBs ZCcQhvklWtuKz4IYL4+iUpMKGHlhY1vCqFx2EzD4XIljFLP9rk7+9+CoyTuIVL/D AgJbJQ== -----END PUBLIC KEY-----解題
公鑰解析
1:
2:
e=23333 n=14853081277902411240991719582265437298941606850989432655928075747449227799832389574251190347654658701773951599098366248661597113015221566041305501996451638624389417055956926238595947885740084994809382932733556986107653499144588614105694518150594105711438983069306254763078820574239989253573144558449346681620784979079971559976102366527270867527423001083169127402157598183442923364480383742653117285643026319914244072975557200353546060352744263637867557162046429886176035616570590229646013789737629785488326501654202429466891022723268768841320111152381619260637023031430545168618446134188815113100443559425057634959299 import gmpy2 from base64 import b64decode from Crypto.Util.number import long_to_bytes from Crypto.Cipher import PKCS1_OAEP from Crypto.PublicKey import RSAc1 ='R3Noy6r3WLItytAmb4FmHEygoilucEEZbO9ZYXx5JN03HNpBLDx7fXd2fl+UL5+11RCs/y0qlTGURWWDtG66eNLzGwNpAKiVj6I7RtUJl2Pcm3NvFeAFwI9UsVREyh7zIV6sI9ZP8l/2GVDorLAz5ULW+f0OINGhJmZm8FL/aDnlfTElhQ87LPicWpXYoMtyr6WrxjK6Ontn8BqCt0EjQ7TeXZhxIH9VTPWjDmFdmOqaqdVIT+LZemTgLNESwM5nn4g5S3aFDFwj1YiDYl0/+8etvKfOrfoKOwR0CxsRHagwdUUTES8EcHLmMGCxCkDZn3SzmmA6Nb3lgLeSgG8P1A==' c2 ='O+rRCXI3aTB6P1rYIOPUdalUp6ujpwEq4I20CoWA+HIL8xxGtqY6N5gpr0guZv9ZgOEAMFnBxOqMdVNnB9GgnhmXtt1ZWydPqIcHvlfwpd/Lyd0XSjXnjaz3P3vOQvR71cD/uXyBA0XPzmnTIMgEhuGJVFm8min0L/2qI7wg/Z7w1+4mOmi655JIXeCiG23ukDv6l9bZuqfGvWCa1KKXWDP31nLbp0ZN2obUs6jEAa1qVTaX6M4My+sks+0VvHATrAUuCrmMwVEivqIJ/nS6ymGVERN6Ohnzyr168knEBKOVj0FAOx3YLfppMM+XbOGHeqdKJRLpMvqFXDMGQInT3w==' e1=2333 n=14853081277902411240991719582265437298941606850989432655928075747449227799832389574251190347654658701773951599098366248661597113015221566041305501996451638624389417055956926238595947885740084994809382932733556986107653499144588614105694518150594105711438983069306254763078820574239989253573144558449346681620784979079971559976102366527270867527423001083169127402157598183442923364480383742653117285643026319914244072975557200353546060352744263637867557162046429886176035616570590229646013789737629785488326501654202429466891022723268768841320111152381619260637023031430545168618446134188815113100443559425057634959299 e2=23333c1 =int.from_bytes(b64decode(c1), byteorder='big', signed=False) c2 =int.from_bytes(b64decode(c2), byteorder='big', signed=False) _, r, s = gmpy2.gcdext(e1, e2)m = pow(c1, r, n) * pow(c2, s, n) % n print(long_to_bytes(m))答案
flag{23re_SDxF_y78hu_5rFgS}
總結
以上是生活随笔為你收集整理的2021-07-09的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021-07-07
- 下一篇: 2021-07-12