[CTF GEMA] RSA
CTF GEMA Groupe 2025
Niveau de Difficulté : Easy
Catégorie du Challenge : Crypto
Description :
J'ai trouvé ceci griffonné sur un morceau de papier. Pouvez-vous y trouver un sens ?
Challenge Concept:
Ce défi consiste à casser du RSA, un algorithme de chiffrage très répandu. RSA repose sur la difficulté de factoriser les grands nombres en leurs composantes premières. Dans ce défi, vous disposez des éléments suivants :
p and q: The two prime factors used to compute nn (the modulus of the public key).
d: The private key, used to decrypt messages.
e: The public key exponent (commonly 6553765537).
The ciphertext: The encrypted text that needs to be decrypted.
Votre objectif est de déchiffrer le texte et de récupérer le texte en clair (le flag).
Steps to Solve the Challenge:
- Comprendre les composants de RSA :
Le modulo est calculé comme suit : n=p×q n=p×q dd: La clé privée, qui est déjà fournie, vous permet de déchiffrer directement le texte chiffré. - Calculer ϕ(n)ϕ(n) (si nécessaire):
ϕ(n)ϕ(n) (Euler's totient function) est calculé comme suit : ϕ(n)=(p−1)×(q−1) ϕ(n)=(p−1)×(q−1) Cette étape n'est pas strictement nécessaire puisque dd est déjà donné. - La formule est la suivante :
plaintext=ciphertextdmod n plaintext=ciphertextdmodn
Utilisez le texte chiffré (ciphertext), dd et nn pour calculer le texte en clair. - Convertir la valeur déchiffrée en texte lisible :
La valeur déchiffrée sera un grand nombre entier, qui doit être converti en une chaîne lisible à l'aide du codage UTF-8.
p=446087557183758429571151706402101809886208632412859901111991219963404685792820473369112545269003989026153245931124316702395758705693679364790903497461147071065254193353938124978226307947312410798874869040070279328428810311754844108094878252494866760969586998128982645877596028979171536962503068429617331702184750324583009171832104916050157628886606372145501702225925125224076829605427173573964812995250569412480720738476855293681666712844831190877620606786663862190240118570736831901886479225810414714078935386562497968178729127629594924411960961386713946279899275006954917139758796061223803393537381034666494402951052059047968693255388647930440925104186817009640171764133172418132836351
q=1475979915214180235084898622737381736312066145333169775147771216478570297878078949377407337049389289382748507531496480477281264838760259191814463365330269540496961201113430156902396093989090226259326935025281409614983499388222831448598601834318536230923772641390209490231836446899608210795482963763094236630945410832793769905399982457186322944729636418890623372171723742105636440368218459649632948538696905872650486914434637457507280441823676813517852099348660847172579408422316678097670224011990280170474894487426924742108823536808485072502240519452587542875349976558572670229633962575212637477897785501552646522609988869914013540483809865681250419497686697771007
d = 334105797271047151981657921517730832371157119074330856217838164677012408641591434986864808806133905517552676051241221220880766442883064579097099015417787407817836444609823288099833966832697449469677098482618977788033303759560236815204203169682707224751050905150039255552119361819964408750709972784839359821706301883041441842767276053766359012570998533260190313947880006413211727740947447067803460706031761174087490228255436052244551636823801781434029233115278710139434099796272520346062523994498058074121550388611165999532399069719243650604162160473244358221089118134071294983607455557349857985437381055885040711267092779938648535194027500626908005136511478177771620221295598221446655310402436746479782368967943153830391704773757455773861050160452401746790867834196061076588076120390140624579927639175546078677218011249954865423538080035612379874054142000812190387918675139826088813202731055651051339403348440263931094983603857618923283552638290258967144154247536313936995282079495778654678503630914818879103007330530120178133686334123351627296777405788745594506415615850210810277691545772909988881340556599596733717401089924014874029987229222036914331526326518454684517757259862612246129598984572912870240390422205211578326598705764422502804258285510188982398306082836846344931332983589484880260309348373229531127293270115611985532798401007828666273
Another way : RsaCtfTool
Au lieu d'effectuer les calculs manuellement, vous pouvez utiliser le tools RsaCtfTool, un outil puissant conçu pour automatiser les attaques et le déchiffrage RSA.
Avec les valeurs fournies, vous pouvez directement utiliser l'outil pour déchiffrer le texte à l'aide des composants de la clé privée (par exemple, pp, qq, nn et ee).
Voici la commande pour déchiffrer le texte à l'aide de l'outil RsaCtfTool :
┌──(kali㉿kali)-[~/Desktop/RsaCtfTool]
└─$ ./RsaCtfTool.py -n 658416274830184544125027519921443515789888264156074733099244040126213682497714032798116399288176502462829255784525977722903018714434309698108208388664768262754316426220651576623731617882923164117579624827261244506084274371250277849351631679441171018418018498039996472549893150577189302871520311715179730714312181456245097848491669795997289830612988058523968384808822828370900198489249243399165125219244753790779764466236965135793576516193213175061401667388622228362042717054014679032953441034021506856017081062617572351195418505899388715709795992029559042119783423597324707100694064675909238717573058764118893225111602703838080618565401139902143069901117174204252871948846864436771808616432457102844534843857198735242005309073939051433790946726672234643259349535186268571629077937597838801337973092285608744209951533199868228040004432132597073390363357892379997655878857696334892216345070227646749851381208554044940444182864026513709449823489593439017366358869648168238735087593808344484365136284219725233811605331815007424582890821887260682886632543613109252862114326372077785369292570900594814481097443781269562647303671428895764224084402259605109600363098950091998891375812839523613295667253813978434879172781217285652895469194181218343078754501694746598738215243769747956572555989594598180639098344891175879455994652382137038240166358066403475457 -e 65537 --decrypt 630942252673559294235791150783284388799943382708247760471542849067980919229050656344954056115242702859408610158996480188321318816351917211385845889678823765396420657706597897587236211790503243276284392668992241403642030454201754059690043805990789045254998332145652382370375833147242434631341369081280943997757902184413030827226751125790360177768938017471377680240898694087021344893219065270548036489359345859779630640001599351034373913163835452574485722363588370543115723650936546171062288256621023690921838885625728221131035873838029837114725548259115710979143053805709210896683305681560415960630044332107024627791163054477266294779120790463246281393525094926510927712567855675365027278640815816525672107047876419390048593977831679002945002975519133255570507410215967210341202298306564847717821839435514263016555327201759625115505718938249672036771887870713551912356485974225264105058587105910081033478427248033157457393129858945267151305094936645937974279303098334548700293155337879207555935911171341874676333554411657887302852022717972586484719681815711425800791632121686640082115513168689471176742425248804320956915138199477406723516816721173602643531758327440930702412036872526790338437703855713792637898312779301006770960466146686036186769356167841563284770670627142206468075914100728559320369930607925236670932258122676164877978314332190248975
output:

Flag
FLAG{RSA_Test_324_ok}