近期比赛复现Vol.3
西湖论剑2024
Or1cle
题目没有提供附件,提供了nc,先链接靶机,显示如下信息:
1 |
|
直接提供了一个交互程序,可以通过一些操作得到包含源代码的信息,首先在get_flag
时如果输入的不合适会进行报错,返回一段代码:
1 | self.P = self.d*secp256k1.G |
提供了签名和验证的代码。后续测试发现在get_signature
时如果连续签名五次也会进行报错,得到另一段代码:
1 | a = getPrime(256) |
大概已经能知道这个题目的逻辑了,就是验证一个签名,满足后就可以返回flag,当我们随便发送一个满足要求的签名对进行验签时会得到一句话:
1 | Only xenny can get flag |
而我尝试使用xenny
进行签名时,也会返回一句:
1 | What makes you think you can pose as Xenny? |
所以这个题目要求的就是我们需要伪造一个xenny的签名使其通过验证。
这题还提供了一个3选项,这个选项测试之后发现是一个伪随机数验证,研究了一下发现似乎没什么用。
观察这里的验证代码:
1 | def verify(self,z, signature): |
发现这里求解逆元用的是s_inv = pow(s, secp256k1.q - 2, secp256k1.q)
,最后验证的是点的x坐标和r值是否相等。所以理论上我们都设为0,使得最后验证的时候为0 == 0
就可以了,发送验签就发送128个0就可以了。验签通过。
我们在数学的角度上来看这个问题,试着用一个比较合理的做法进行求解:
观察签名函数:
1 | def signature(self,msg): |
发现:
在secp256k1中的参数是公开确定的,返回的值包含了$(r,s)$对,所以上面的同余式只有$d$一个未知量。根据题目的思路,我们可以获得五组不同的数据构成等式。
但是,式子其中的异或运算仔细想想是不容易直接解出来的,异或的本质上相当于将一个未知数变成了它未知bit位个未知数,解不了。进而去尝试用格来求解:
先来记住一个公式:
这个式子将异或运算转化成了加减法和按位与运算,又有:
所以,可以将看似复杂的异或运算进行简化:
转换成题目中的式子,我们先使用一组数据:
将上式中的$d$也可以转化成按位表示的形式,这样这个方程的未知数只剩每个bit位了:
写出方便造格的形式:
合并一下同类项:
我们的格基就是这种形式:
满足关系:
进行格基规约,找规约后矩阵满足上面等式右侧形式的,就相当于求得了这个私钥$d$,之后我们就可以利用他的签名方式自己制作一个xenny
的签名,验签通过。贴一个大佬的脚本:
1 | from Pwn4Sage.pwn import * |
L3HCTF 2024
随便打了一下,misc那边还做了几个题,就不写了,还是只看看密码吧!
babySPN
1 | import random |
看着非常复杂,但是注意观察:
1 | K = [0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0] |
这相当于直接把flag告诉我们了,直接输出就能得到flag:
1 | from Crypto.Util.number import * |
can_you_guess_me
1 | from Crypto.Util.number import * |
题目给了五组$a_i$,需要我们恢复flag,根据代码可以发现flag内部的hex应该是在域$q$里的,相对比较小。
由于题目代码我们知道$t,e$是比较小的,可以想法造格去求,找一下对应关系:
既然这里我们是要求解这些小值,想个办法把位置的flag$s$消掉,这样两式作差:
展开成为等式,将右边可以设为$x_i$:
通过五组数据排列组合,我们可以得到$4+3+2+1=10$个这样的方程,造格:
有:
1 | from Crypto.Util.number import * |
得到的规约基中,查看每行的前五个元素,如果这个数能整除$2^{32}$而且除后在$2^{48}$以内,那么就说明这个是正确的$t$。得到$t$之后,就可以进一步求解$e$:
在这个式子中,我们现在已经得到了所有的$t$,左边是已知的,设为$m$,可以进一步把这个式子放在模$t_i$中,得到:
接下来求解逆元就可以得到$e_i$,根据式子逆回去就可以得到flag:
1 | from Crypto.Util.number import * |
Badrlwe
1 | from Crypto.Util.number import * |
比赛时没怎么看这道题,后续来复现一下。
这题属于RLWE,环和方程为:
$s$向量为ASCII,比较小,可以作为LLL求解的短向量。
这个题如果直接套RLWE模板,发现格的维度过于大,解不出来。发现$s$向量只有$64$个低位不为$0$,其他位全为$0$,可以利用这个特点去解。
可以把多项式按照$s$的特点来切分:
这里的$A$是RLWE的卷积矩阵:
可以发现,由于零向量的引入,可以消除$A_2,A_3$:
相当于最终我们只需求出$s_0$,可以省去一些多余部分$A_1$,对应消去其他项,进一步化简式子:
接下来就是构造RLWE的格直接解就可以了,上一个改的模板:
1 | a = 216047404*x^1023 + 1008199117*x^1022 + 39562072*x^1021 + 189992355*x^1020 + 1087671639*x^1019 + 541371337*x^1018 + 1146044200*x^1017 + 212969175*x^1016 + 1114159572*x^1015 + 1112032860*x^1014 + 1204883609*x^1013 + 1181544913*x^1012 + 851496082*x^1011 + 222877006*x^1010 + 163176236*x^1009 + 268697504*x^1008 + 613151090*x^1007 + 1185245256*x^1006 + 215725010*x^1005 + 789898500*x^1004 + 1156619111*x^1003 + 610859911*x^1002 + 959814483*x^1001 + 684353251*x^1000 + 290850651*x^999 + 675880502*x^998 + 836239751*x^997 + 487296407*x^996 + 778816128*x^995 + 1013639221*x^994 + 189137575*x^993 + 172217836*x^992 + 572872008*x^991 + 865759581*x^990 + 399805736*x^989 + 394587004*x^988 + 633085719*x^987 + 15142893*x^986 + 461176831*x^985 + 1078060208*x^984 + 787396508*x^983 + 877420202*x^982 + 1121486845*x^981 + 146921816*x^980 + 670134387*x^979 + 574407635*x^978 + 1148395437*x^977 + 748514947*x^976 + 970442995*x^975 + 280085063*x^974 + 420670822*x^973 + 20159574*x^972 + 219680665*x^971 + 401202858*x^970 + 328444623*x^969 + 623312316*x^968 + 917712264*x^967 + 588061576*x^966 + 625482841*x^965 + 220929234*x^964 + 778461001*x^963 + 498203565*x^962 + 1055981771*x^961 + 70562147*x^960 + 931081750*x^959 + 93569863*x^958 + 314876311*x^957 + 932364613*x^956 + 1132016772*x^955 + 371703330*x^954 + 189301560*x^953 + 739232608*x^952 + 916695967*x^951 + 399818344*x^950 + 558604923*x^949 + 1092603913*x^948 + 987195616*x^947 + 665679589*x^946 + 1142632478*x^945 + 198797278*x^944 + 110832477*x^943 + 775688737*x^942 + 275416086*x^941 + 435656120*x^940 + 754150483*x^939 + 1024583186*x^938 + 972075461*x^937 + 1071060217*x^936 + 710789980*x^935 + 691361770*x^934 + 1097024307*x^933 + 862356288*x^932 + 354500195*x^931 + 158151296*x^930 + 733475281*x^929 + 215008492*x^928 + 151139272*x^927 + 1000425669*x^926 + 590964357*x^925 + 373950911*x^924 + 43038800*x^923 + 338044906*x^922 + 293954870*x^921 + 393479*x^920 + 555095359*x^919 + 418829106*x^918 + 95391760*x^917 + 897658305*x^916 + 1040609125*x^915 + 239948276*x^914 + 1190720461*x^913 + 160498737*x^912 + 394967890*x^911 + 104302686*x^910 + 48021969*x^909 + 761000569*x^908 + 356140410*x^907 + 225246587*x^906 + 79172445*x^905 + 975365689*x^904 + 1077396491*x^903 + 728717352*x^902 + 964273647*x^901 + 258781036*x^900 + 746930481*x^899 + 793742220*x^898 + 542128050*x^897 + 562413014*x^896 + 701216258*x^895 + 928704966*x^894 + 98656502*x^893 + 1016152774*x^892 + 140544845*x^891 + 226416702*x^890 + 309310359*x^889 + 519065123*x^888 + 346740110*x^887 + 116615122*x^886 + 990804519*x^885 + 208648062*x^884 + 605381435*x^883 + 821163414*x^882 + 864698754*x^881 + 424773230*x^880 + 1184139330*x^879 + 437390254*x^878 + 41435781*x^877 + 824197241*x^876 + 1181823353*x^875 + 354135255*x^874 + 921600154*x^873 + 972782404*x^872 + 304175744*x^871 + 976950586*x^870 + 561195955*x^869 + 840601911*x^868 + 848362310*x^867 + 698380233*x^866 + 703722831*x^865 + 527081934*x^864 + 996708932*x^863 + 926257884*x^862 + 113808466*x^861 + 111022399*x^860 + 336240881*x^859 + 281602555*x^858 + 456022351*x^857 + 303940681*x^856 + 1152960332*x^855 + 762827305*x^854 + 1097893502*x^853 + 1159492861*x^852 + 791288185*x^851 + 552596428*x^850 + 1160303133*x^849 + 855459983*x^848 + 870046128*x^847 + 412042730*x^846 + 527317697*x^845 + 118258027*x^844 + 1156090191*x^843 + 1184418516*x^842 + 736914609*x^841 + 1042440949*x^840 + 1118336201*x^839 + 692314475*x^838 + 888141647*x^837 + 611975215*x^836 + 112482309*x^835 + 774541929*x^834 + 877613260*x^833 + 218484596*x^832 + 744043072*x^831 + 1149426359*x^830 + 1086732941*x^829 + 218727414*x^828 + 111004493*x^827 + 48035668*x^826 + 1129753198*x^825 + 410088959*x^824 + 1186919074*x^823 + 291266088*x^822 + 622780685*x^821 + 908030149*x^820 + 152548456*x^819 + 970996704*x^818 + 643233117*x^817 + 97648457*x^816 + 167039372*x^815 + 451159004*x^814 + 21522258*x^813 + 446568222*x^812 + 97236135*x^811 + 601480363*x^810 + 896523050*x^809 + 635312918*x^808 + 771155729*x^807 + 727217487*x^806 + 1103325662*x^805 + 1145702253*x^804 + 111451279*x^803 + 709647761*x^802 + 155865734*x^801 + 788861657*x^800 + 25328658*x^799 + 387592047*x^798 + 631380316*x^797 + 195654331*x^796 + 379901017*x^795 + 110746571*x^794 + 821639667*x^793 + 1196705497*x^792 + 926725497*x^791 + 752090468*x^790 + 565928514*x^789 + 107924077*x^788 + 1035444397*x^787 + 389590222*x^786 + 746022468*x^785 + 1152494936*x^784 + 1047183126*x^783 + 935173423*x^782 + 237022259*x^781 + 68211471*x^780 + 682392084*x^779 + 900610142*x^778 + 659697118*x^777 + 381789469*x^776 + 895479393*x^775 + 342674862*x^774 + 1034152415*x^773 + 736863278*x^772 + 233824501*x^771 + 511543257*x^770 + 43539547*x^769 + 871109943*x^768 + 234226499*x^767 + 958639125*x^766 + 913885377*x^765 + 757234386*x^764 + 330354514*x^763 + 693659124*x^762 + 46757147*x^761 + 24910108*x^760 + 263754046*x^759 + 1007999117*x^758 + 569158879*x^757 + 781185896*x^756 + 328234792*x^755 + 1166796778*x^754 + 1023882729*x^753 + 1126014838*x^752 + 412948341*x^751 + 745762031*x^750 + 184601330*x^749 + 1195686854*x^748 + 226180761*x^747 + 813440273*x^746 + 198496604*x^745 + 646284299*x^744 + 775658802*x^743 + 1051631440*x^742 + 382010443*x^741 + 884529292*x^740 + 1171509241*x^739 + 148470016*x^738 + 545551560*x^737 + 895321797*x^736 + 990533556*x^735 + 1006826878*x^734 + 444425261*x^733 + 538658289*x^732 + 1201448839*x^731 + 813543244*x^730 + 866138640*x^729 + 992484781*x^728 + 797592952*x^727 + 5350520*x^726 + 1088776239*x^725 + 1011384293*x^724 + 202279961*x^723 + 580990742*x^722 + 608736084*x^721 + 592191483*x^720 + 603821965*x^719 + 686032966*x^718 + 309449994*x^717 + 997796743*x^716 + 323694959*x^715 + 404631321*x^714 + 684041814*x^713 + 954922509*x^712 + 17334061*x^711 + 1038027065*x^710 + 189030167*x^709 + 238786122*x^708 + 854157242*x^707 + 857322405*x^706 + 847505723*x^705 + 531600098*x^704 + 413144959*x^703 + 150862275*x^702 + 176120020*x^701 + 147651128*x^700 + 20961937*x^699 + 924892688*x^698 + 207889399*x^697 + 506289209*x^696 + 201657090*x^695 + 866897606*x^694 + 282950189*x^693 + 484625027*x^692 + 720969770*x^691 + 557487808*x^690 + 664292309*x^689 + 667236796*x^688 + 505039446*x^687 + 636507041*x^686 + 717904854*x^685 + 742491214*x^684 + 235380401*x^683 + 885103138*x^682 + 227708439*x^681 + 195450351*x^680 + 914408549*x^679 + 890140153*x^678 + 959662247*x^677 + 655663410*x^676 + 682768547*x^675 + 1063757282*x^674 + 776284911*x^673 + 1114588219*x^672 + 689022198*x^671 + 1160585767*x^670 + 784564493*x^669 + 599804982*x^668 + 954265199*x^667 + 1160092910*x^666 + 1178991310*x^665 + 610146522*x^664 + 589028938*x^663 + 972903553*x^662 + 933544074*x^661 + 910101746*x^660 + 1199479046*x^659 + 129564572*x^658 + 16630574*x^657 + 604268174*x^656 + 905616984*x^655 + 229755095*x^654 + 543777663*x^653 + 880642044*x^652 + 750742780*x^651 + 801027824*x^650 + 59869899*x^649 + 178293151*x^648 + 413473523*x^647 + 790966353*x^646 + 36947608*x^645 + 215402931*x^644 + 198271237*x^643 + 394503398*x^642 + 933396244*x^641 + 764498758*x^640 + 960831635*x^639 + 710558646*x^638 + 160491214*x^637 + 161213508*x^636 + 932611994*x^635 + 226519192*x^634 + 554464756*x^633 + 82595536*x^632 + 1144714763*x^631 + 361090580*x^630 + 747809061*x^629 + 114293244*x^628 + 253349999*x^627 + 1051279816*x^626 + 1079507344*x^625 + 864605458*x^624 + 1100098300*x^623 + 323233106*x^622 + 1070769430*x^621 + 1048471132*x^620 + 23281664*x^619 + 1099148878*x^618 + 812556000*x^617 + 452606567*x^616 + 892217880*x^615 + 741556204*x^614 + 37168552*x^613 + 286980867*x^612 + 1125383508*x^611 + 782814488*x^610 + 1214851511*x^609 + 270577673*x^608 + 364433480*x^607 + 825553809*x^606 + 589475297*x^605 + 293114041*x^604 + 1115978872*x^603 + 21831218*x^602 + 856821602*x^601 + 213782489*x^600 + 287159884*x^599 + 1015101950*x^598 + 494211644*x^597 + 38143731*x^596 + 882805771*x^595 + 721674528*x^594 + 120092153*x^593 + 636819567*x^592 + 365557574*x^591 + 619653423*x^590 + 1207892829*x^589 + 971282528*x^588 + 379459809*x^587 + 507124241*x^586 + 1050378769*x^585 + 113715629*x^584 + 841835564*x^583 + 1055649818*x^582 + 904319486*x^581 + 83232231*x^580 + 282044435*x^579 + 11563226*x^578 + 283283452*x^577 + 515932154*x^576 + 415242679*x^575 + 686396058*x^574 + 414011723*x^573 + 22692318*x^572 + 593039855*x^571 + 42054428*x^570 + 242713788*x^569 + 756543053*x^568 + 297264974*x^567 + 656668981*x^566 + 103185189*x^565 + 279211827*x^564 + 66472175*x^563 + 221289056*x^562 + 418547255*x^561 + 587378319*x^560 + 781217899*x^559 + 828907515*x^558 + 1026785730*x^557 + 936576598*x^556 + 914519864*x^555 + 458326840*x^554 + 846364356*x^553 + 1048948157*x^552 + 276890468*x^551 + 211463242*x^550 + 611009955*x^549 + 41350370*x^548 + 1120260432*x^547 + 1217213406*x^546 + 1096884636*x^545 + 107298827*x^544 + 556646889*x^543 + 514714957*x^542 + 592531623*x^541 + 1185635127*x^540 + 866796164*x^539 + 1199009440*x^538 + 760543377*x^537 + 135043128*x^536 + 1184521976*x^535 + 53368352*x^534 + 614063947*x^533 + 117184488*x^532 + 1090625549*x^531 + 928160285*x^530 + 1065640157*x^529 + 307397590*x^528 + 383318068*x^527 + 890835908*x^526 + 416986540*x^525 + 222852700*x^524 + 965323537*x^523 + 151764017*x^522 + 193722745*x^521 + 439803983*x^520 + 942882901*x^519 + 56286764*x^518 + 824204572*x^517 + 478793274*x^516 + 183238303*x^515 + 922253103*x^514 + 5444136*x^513 + 402856270*x^512 + 508652113*x^511 + 898341402*x^510 + 56743140*x^509 + 179078829*x^508 + 360574641*x^507 + 691533190*x^506 + 982373838*x^505 + 719429684*x^504 + 962339948*x^503 + 1097706834*x^502 + 682588935*x^501 + 1193566532*x^500 + 1140505780*x^499 + 1167874911*x^498 + 669408623*x^497 + 15348570*x^496 + 896129486*x^495 + 100671957*x^494 + 1015786650*x^493 + 605094306*x^492 + 704959137*x^491 + 503877361*x^490 + 546763047*x^489 + 281625173*x^488 + 874599768*x^487 + 187483443*x^486 + 791213383*x^485 + 670376251*x^484 + 484751013*x^483 + 519454749*x^482 + 898655062*x^481 + 1088862155*x^480 + 843442957*x^479 + 429341712*x^478 + 869408179*x^477 + 921648096*x^476 + 526019939*x^475 + 856290375*x^474 + 531710459*x^473 + 1135323038*x^472 + 222776023*x^471 + 223826994*x^470 + 782612384*x^469 + 208579370*x^468 + 809908930*x^467 + 802818642*x^466 + 1182584545*x^465 + 245518705*x^464 + 114792460*x^463 + 646248449*x^462 + 63969962*x^461 + 761908644*x^460 + 523665668*x^459 + 1131060959*x^458 + 507746193*x^457 + 215968166*x^456 + 186113215*x^455 + 1117740378*x^454 + 649175082*x^453 + 396834257*x^452 + 274002774*x^451 + 626055138*x^450 + 924423066*x^449 + 81357715*x^448 + 1042994674*x^447 + 380053163*x^446 + 687766657*x^445 + 414805559*x^444 + 1118153385*x^443 + 1196507975*x^442 + 223759358*x^441 + 808836890*x^440 + 558230978*x^439 + 470920831*x^438 + 313868031*x^437 + 696317665*x^436 + 38725962*x^435 + 722983488*x^434 + 982704221*x^433 + 931470025*x^432 + 658261117*x^431 + 1043739465*x^430 + 422603501*x^429 + 879856656*x^428 + 977082068*x^427 + 593021461*x^426 + 955543544*x^425 + 194004912*x^424 + 1057355064*x^423 + 1153279801*x^422 + 1104874965*x^421 + 1157109085*x^420 + 54358054*x^419 + 802241073*x^418 + 489376522*x^417 + 250441773*x^416 + 740903923*x^415 + 81493461*x^414 + 966046559*x^413 + 295086523*x^412 + 1192114766*x^411 + 1186654005*x^410 + 768853461*x^409 + 302013033*x^408 + 1127093874*x^407 + 401944628*x^406 + 463364841*x^405 + 277324527*x^404 + 357826211*x^403 + 302642912*x^402 + 785232813*x^401 + 1155455395*x^400 + 240939622*x^399 + 1090741169*x^398 + 941697407*x^397 + 1108935255*x^396 + 63027943*x^395 + 415750779*x^394 + 36046273*x^393 + 172429619*x^392 + 563533800*x^391 + 961503349*x^390 + 356454474*x^389 + 586712431*x^388 + 572728001*x^387 + 670855384*x^386 + 268877633*x^385 + 51139525*x^384 + 806328542*x^383 + 790061093*x^382 + 140256246*x^381 + 430118720*x^380 + 924612224*x^379 + 923573107*x^378 + 1124645882*x^377 + 1044890409*x^376 + 509180566*x^375 + 371227114*x^374 + 161843486*x^373 + 296514161*x^372 + 454272518*x^371 + 755779732*x^370 + 295567281*x^369 + 1063635155*x^368 + 46603670*x^367 + 112353112*x^366 + 571920305*x^365 + 484055586*x^364 + 148075787*x^363 + 700140701*x^362 + 922814151*x^361 + 198283677*x^360 + 806078101*x^359 + 1218701262*x^358 + 679274064*x^357 + 408382456*x^356 + 284971608*x^355 + 1072737570*x^354 + 999420946*x^353 + 704897365*x^352 + 1147239838*x^351 + 1148707218*x^350 + 119677974*x^349 + 139766009*x^348 + 289899118*x^347 + 3099746*x^346 + 478334394*x^345 + 671867092*x^344 + 1123276962*x^343 + 1053910974*x^342 + 776016929*x^341 + 408840884*x^340 + 702734268*x^339 + 101137143*x^338 + 157330682*x^337 + 608473559*x^336 + 355406102*x^335 + 1189624142*x^334 + 87874850*x^333 + 1097033743*x^332 + 984835279*x^331 + 133446104*x^330 + 990221835*x^329 + 34152703*x^328 + 902602955*x^327 + 564227604*x^326 + 378045277*x^325 + 330935315*x^324 + 300442927*x^323 + 504016276*x^322 + 592727454*x^321 + 1075766200*x^320 + 718996149*x^319 + 823573424*x^318 + 834215705*x^317 + 430497892*x^316 + 879722938*x^315 + 968236501*x^314 + 262764692*x^313 + 37503817*x^312 + 607855810*x^311 + 1173289902*x^310 + 906609932*x^309 + 11948749*x^308 + 948969610*x^307 + 1130417155*x^306 + 892108695*x^305 + 1040897188*x^304 + 174698274*x^303 + 85414336*x^302 + 758730292*x^301 + 615781943*x^300 + 1215130735*x^299 + 1168693743*x^298 + 1070287857*x^297 + 501559848*x^296 + 485147924*x^295 + 1218893131*x^294 + 923876087*x^293 + 565056561*x^292 + 282754375*x^291 + 794028720*x^290 + 288419549*x^289 + 688387454*x^288 + 40339086*x^287 + 659115548*x^286 + 614342861*x^285 + 391568544*x^284 + 464738754*x^283 + 28669498*x^282 + 1115640335*x^281 + 870635325*x^280 + 126237247*x^279 + 1111165998*x^278 + 205027579*x^277 + 911218811*x^276 + 208748481*x^275 + 725176545*x^274 + 765151044*x^273 + 939495648*x^272 + 550038893*x^271 + 905707993*x^270 + 267107699*x^269 + 477779883*x^268 + 251985659*x^267 + 754082836*x^266 + 159569451*x^265 + 781616103*x^264 + 1098961576*x^263 + 1139687026*x^262 + 473401848*x^261 + 623689501*x^260 + 1012676202*x^259 + 76777202*x^258 + 170602576*x^257 + 266093330*x^256 + 732274753*x^255 + 193219366*x^254 + 610602682*x^253 + 749761392*x^252 + 536911921*x^251 + 1052883954*x^250 + 1139729422*x^249 + 617278363*x^248 + 603450863*x^247 + 877968049*x^246 + 1078543204*x^245 + 441578327*x^244 + 821469144*x^243 + 1083268726*x^242 + 592074734*x^241 + 431251183*x^240 + 1151073027*x^239 + 596034003*x^238 + 507176703*x^237 + 638155464*x^236 + 820097610*x^235 + 69713965*x^234 + 111089281*x^233 + 403306683*x^232 + 417322569*x^231 + 510992488*x^230 + 406068742*x^229 + 487323397*x^228 + 1105866147*x^227 + 126043214*x^226 + 565379393*x^225 + 774566507*x^224 + 94477834*x^223 + 301787901*x^222 + 891557978*x^221 + 246179873*x^220 + 76065360*x^219 + 632831219*x^218 + 967852970*x^217 + 982932236*x^216 + 457056482*x^215 + 611696056*x^214 + 187879254*x^213 + 919970751*x^212 + 726626422*x^211 + 744906999*x^210 + 514152204*x^209 + 400846913*x^208 + 1057213516*x^207 + 458393393*x^206 + 39867352*x^205 + 482474421*x^204 + 1017159775*x^203 + 1127386440*x^202 + 186890818*x^201 + 297371952*x^200 + 827010510*x^199 + 457757189*x^198 + 120047360*x^197 + 403406161*x^196 + 561776540*x^195 + 269984973*x^194 + 1105865523*x^193 + 356682370*x^192 + 521018201*x^191 + 714326305*x^190 + 230112489*x^189 + 468954949*x^188 + 428412182*x^187 + 418097923*x^186 + 648421330*x^185 + 119412602*x^184 + 1029175202*x^183 + 961854350*x^182 + 359274957*x^181 + 918516748*x^180 + 393392054*x^179 + 998769881*x^178 + 713880369*x^177 + 23918875*x^176 + 19140072*x^175 + 296443203*x^174 + 1036511543*x^173 + 208417465*x^172 + 856221174*x^171 + 724608949*x^170 + 1148614286*x^169 + 605394185*x^168 + 1037184954*x^167 + 1149508482*x^166 + 748219008*x^165 + 762595570*x^164 + 240812860*x^163 + 221590855*x^162 + 921277317*x^161 + 666749995*x^160 + 270085731*x^159 + 719780654*x^158 + 1023109552*x^157 + 948736441*x^156 + 942460534*x^155 + 1190076672*x^154 + 298412436*x^153 + 146236637*x^152 + 136974417*x^151 + 247369427*x^150 + 1164600849*x^149 + 80725190*x^148 + 563971590*x^147 + 838975230*x^146 + 605884308*x^145 + 695738052*x^144 + 457993644*x^143 + 608089160*x^142 + 279768415*x^141 + 167776427*x^140 + 99830319*x^139 + 724761513*x^138 + 838344856*x^137 + 349705095*x^136 + 700591961*x^135 + 495192008*x^134 + 166834844*x^133 + 829383641*x^132 + 689577635*x^131 + 1063098370*x^130 + 1217658142*x^129 + 210005674*x^128 + 709445493*x^127 + 890260692*x^126 + 11818873*x^125 + 356866298*x^124 + 657354178*x^123 + 1083325742*x^122 + 256937537*x^121 + 832141251*x^120 + 738779202*x^119 + 531375449*x^118 + 570407521*x^117 + 253499493*x^116 + 936295735*x^115 + 840539077*x^114 + 1108243632*x^113 + 518037787*x^112 + 512681158*x^111 + 659791034*x^110 + 615039004*x^109 + 6475754*x^108 + 112655504*x^107 + 135513268*x^106 + 814830817*x^105 + 312451349*x^104 + 459204360*x^103 + 536270797*x^102 + 487599107*x^101 + 995873996*x^100 + 947176358*x^99 + 161110841*x^98 + 1215850742*x^97 + 828031021*x^96 + 393857015*x^95 + 483165571*x^94 + 1169422374*x^93 + 185485308*x^92 + 1113820447*x^91 + 1217012548*x^90 + 591690262*x^89 + 230984245*x^88 + 1183186281*x^87 + 984746087*x^86 + 321334226*x^85 + 356396152*x^84 + 812358214*x^83 + 652862462*x^82 + 1159946831*x^81 + 1185692555*x^80 + 1101691161*x^79 + 1162783803*x^78 + 592033894*x^77 + 545367197*x^76 + 441688164*x^75 + 169491076*x^74 + 181297517*x^73 + 590332818*x^72 + 814337101*x^71 + 1148316386*x^70 + 700258144*x^69 + 719201877*x^68 + 1160695934*x^67 + 1186868159*x^66 + 508542038*x^65 + 1113702100*x^64 + 921032142*x^63 + 758636144*x^62 + 890540800*x^61 + 136808203*x^60 + 74886413*x^59 + 156077420*x^58 + 925473910*x^57 + 111404286*x^56 + 355116767*x^55 + 468038980*x^54 + 89708844*x^53 + 878616521*x^52 + 1154657871*x^51 + 677831135*x^50 + 903468800*x^49 + 890557208*x^48 + 1035114476*x^47 + 198189399*x^46 + 864375452*x^45 + 1164916963*x^44 + 929627324*x^43 + 418711325*x^42 + 97430691*x^41 + 1172413774*x^40 + 760600756*x^39 + 943281805*x^38 + 53033182*x^37 + 123566782*x^36 + 665472336*x^35 + 521103310*x^34 + 892876972*x^33 + 169828417*x^32 + 315862403*x^31 + 973295601*x^30 + 1036868940*x^29 + 469235131*x^28 + 1097609240*x^27 + 446027303*x^26 + 356219098*x^25 + 480790123*x^24 + 94742566*x^23 + 691728720*x^22 + 922852954*x^21 + 21648854*x^20 + 903452116*x^19 + 1043050543*x^18 + 867501915*x^17 + 402312961*x^16 + 772349320*x^15 + 806410607*x^14 + 573402289*x^13 + 103888540*x^12 + 147927873*x^11 + 1005161156*x^10 + 988774771*x^9 + 682875980*x^8 + 54946232*x^7 + 717143945*x^6 + 323577100*x^5 + 803064428*x^4 + 598462622*x^3 + 1110253556*x^2 + 764371182*x + 634648371 |
VNCTF 2024
练车去了没打,赛后看看题吧。
SignAhead
试试伪造token和md5签名!
1 | from hashlib import md5 |
这里是哈希长度拓展攻击,相关内容在:哈希函数 | Chemtrails (ch3mtr4ils.cn)
照着脚本改改即可:
1 | # 参考:https://github.com/bkfish/Script-DES-Crypto/blob/master/MD5/python3/md5.py |
basiccry
1 | import random |
题目定义了一个$rr$是随机的$256$维的$0$或$1$矩阵,$mm$是$256$个$256$长度的flag向量组成的矩阵,也是$0$或$1$,有公式:
这里的$ii$是我们传给靶机的,我们可以自定义这个向量,所以这个题目中我们已知$dd,ii,cc$。
很明显,我们如果知道$rr$根据模二加法就能进一步得到flag,这里可以想到用背包密码中的超递增向量反向求解$rr$,定义一个超递增向量$ii$,根据$dd$的第一个数据就可以还原$rr$的第一个行向量,反向就能求解$mm[0]$,由于这矩阵的所有行向量都是flag,所以随便求出一个就能转化成flag了,比较简单,先获取数据:
1 | from pwn import * |
接下来直接利用超递增向量的特性和模二加法的特点就可以还原:
1 | from Crypto.Util.number import * |
也可以直接用sage求一下向量差直接得到:
1 | from Crypto.Util.number import * |
N1CTF 2024
Junior RSA
1 | from Crypto.Util.number import * |
粗略看了一下代码发现需要分解$n$:
这里的$a,b,c$都是$256$位的素数,根据多项式乘积的位数分布,我们可以通过$n$的高$256$位和低$256$位直接得到$ac$积的高$256$位和$bc$乘积的低$256$位。对于$e$来说可以拆:
可以想办法先求出$b$,将第一个式子变一下:
发现当我们除以已知的$2^{256}(ac)_h$时,去掉余数,也就是第二项,我们就可以直接得到$b$,但是由于被除数和带余除法的余数相同位数不确定是否还能继续除,所以可能会有偏差,可以往前爆破一下验证得到$b$。
利用同样的方法展开第二个式子:
这里可以很容易发现,等式放在模$2^{256}$下,直接就能得到:
求一下逆元,就能得到$a$:
$a,b$都得到了,就能得到$c$,可以进行因式分解求解RSA:
1 | from Crypto.Util.number import * |
NSSCTF ROUND19
Decision
1 | from Crypto.Util.number import * |
题目是一个MRG(多重递归生成器),没咋见过直接研究研究生成算法得了:
1 | def next(self): |
参数$a,b,s$都是随机数,其中$s$是随机从ASCII可见字符中的ASCII转码得到的,比较小,递推公式有:
新的状态就是一个前十个状态向量乘加上一个随机$b$得到的。
再来看看题目的加密:
1 | for i in flag_bin: |
这里根据flag的每个二进制位判断,如果为$0$的话生成MRG2024轮后的参数,如果为$1$的话则是全随机的随机数。
我们需要判断每一组样本是MRG还是纯随机样本,类似于DLWE。还是注意到$s$是随机从ASCII可见字符中的ASCII转码得到的比较小的值,想到用格,可以先用矩阵表示一下:
这里每次迭代使用的$a,b$都是相同的,所以可以直接拿来继续表示所有的2024轮递推:
假设现在我们有一组MRG样本,构造这个递推矩阵:
简化一下等式:
要想规约后表示成一个短向量形式,进行一下转置:
但是,题目只给了2024轮迭代后的第一个量($s_{2024}$),干脆直接去掉剩下的未知部分,得到:
造格:
注意配一下系数:
1 | from tqdm import * |
Aliyun CTF 2024
打的稀烂,出了一道misc感觉还有点价值,拿来聊一聊。
帕鲁的情绪管理
没有附件,连接靶机,首先解一个sha256的POW,解出来之后提示:
1 | Do you want to training? (y/n) y |
会提示进行了一个training过程,然后发送了四十条文本,像是推文,且还自动匹配了一个对应的情绪,然后有:
1 | Now, Do you want to start challenge? (y/n) |
我们选择确定,然后会进入一个15轮的challenge:
1 | Round 1/15, text: @SouthwestAir Just sent DM. Thanks for your attentiveness to this matter. |
这个验证是很快的,大概不到一秒不回答就超时了,看来是根据推文来回答当前的情绪,自己分析是肯定要超时的,首先想到的就是根据题目给出的training数据获得大量数据看看是否能查找得到当前的情绪。
简单拉了几组数据发现并不简单,数据量非常多,感觉大概在几万组,给出一个整合后的脚本,第一个大模块用来不断链接靶机读取数据,然后存到一个记事本中,由于不清楚数据量到底有多少,以及大概获得多少组数据就可以进行challenge了,所以就干脆慢慢去试,收集到一万组出头的数据后测了十几次终于有一次运气比较好过了:
1 | import itertools |
1 | [x] Opening connection to misc0.aliyunctf.com on port 9999 |
字
非常烧脑的一个脑洞题目:
1 | 汉字,又称中文字、华⽂字、华语字、唐话字、唐人字、中国字,为记录汉语而发明的语素文字,受到汉字文化圈广泛使用,为世界唯一仍广泛使用并⾼度发展的语素文字,也是独有的指示会意⽂字体系。最初,由中国上古时代的黄河文明华夏族所发明创制,其字体历经长久改进及演变。目前确切出现的历史尚有讨论空间,最早可追溯至陶文,成熟于约公元前1300年商朝的甲骨⽂、籀文、金⽂,再到春秋战国与秦朝的籀⽂、⼩篆,发展⾄汉朝发生⾪变产⽣隶书并于后世派⽣出草书、楷书、行书,在唐代稳定为今日所用的⼿写字体标准——正楷。 |
发现题目中有一些字长得不大一样,网上搜索了一下发现是康熙部首,当时第一时间想到把这些康熙部首单独拿出来看看是不是有什么加密,去维基上查了一下对应关系,转化了几次没试出来。
看了官方wp,并不是直接全拿出来进行了什么什么加密,而是文章中相同的字有的被替换成了康熙部首,有的并没有替换,需要提取出所有带有对应康熙部首的字,然后根据是否替换来得到一串01序列密文。
这里的映射关系来自:unicode.org/Public/13.0.0/ucd/EquivalentUnifiedIdeograph.txt
1 | unicode = open('unicode.txt', 'r').readlines() |
得到序列之后将密文所有的字全部过一遍,得到筛选后的01序列:
1 | enc = open('enc.txt', 'r', encoding='utf-8').read() |
这串序列末尾有非常多的0,然后后面还接着七个连续的1,如果我们把这七个1看做终止符的话,剩下的308位刚好能被7整除,猜测是7位一个对应,这里是用了GB2312字符集加密,直接decode用对应的字符集解密即可:
1 | unicode = open('unicode.txt', 'r').readlines() |