last_signin

  1. from Crypto.Util.number import *
  2. flag = b'?'
  3. e = 65537
  4. p, q = getPrime(1024), getPrime(1024)
  5. N = p * q
  6. gift = p&(2**923-2**101)
  7. m = bytes_to_long(flag)
  8. c = pow(m, e, N)
  9. print("N = ",N)
  10. print("gift = ",gift)
  11. print("c = ",c)
  12. """
  13. N = 12055968471523053394851394038007091122809367392467691213651520944038861796011063965460456285088011754895260428814358599592032865236006733879843493164411907032292051539754520574395252298997379020268868972160297893871261713263196092380416876697472160104980015554834798949155917292189278888914003846758687215559958506116359394743135211950575060201887025032694825084104792059271584351889134811543088404952977137809673880602946974798597506721906751835019855063462460686036567578835477249909061675845157443679947730585880392110482301750827802213877643649659069945187353987713717145709188790427572582689339643628659515017749
  14. p0 = 70561167908564543355630347620333350122607189772353278860674786406663564556557177660954135010748189302104288155939269204559421198595262277064601483770331017282701354382190472661583444774920297367889959312517009682740631673940840597651219956142053575328811350770919852725338374144
  15. c = 2475592349689790551418951263467994503430959303317734266333382586608208775837696436139830443942890900333873206031844146782184712381952753718848109663188245101226538043101790881285270927795075893680615586053680077455901334861085349972222680322067952811365366282026756737185263105621695146050695385626656638309577087933457566501579308954739543321367741463532413790712419879733217017821099916866490928476372772542254929459218259301608413811969763001504245717637231198848196348656878611788843380115493744125520080930068318479606464623896240289381601711908759450672519228864487153103141218567551083147171385920693325876018
  16. """

参考:D^3CTF 官方Write Up-Crypto-Bivariate

exp:

  1. #sage#
  2. N = 12055968471523053394851394038007091122809367392467691213651520944038861796011063965460456285088011754895260428814358599592032865236006733879843493164411907032292051539754520574395252298997379020268868972160297893871261713263196092380416876697472160104980015554834798949155917292189278888914003846758687215559958506116359394743135211950575060201887025032694825084104792059271584351889134811543088404952977137809673880602946974798597506721906751835019855063462460686036567578835477249909061675845157443679947730585880392110482301750827802213877643649659069945187353987713717145709188790427572582689339643628659515017749
  3. p0 = 70561167908564543355630347620333350122607189772353278860674786406663564556557177660954135010748189302104288155939269204559421198595262277064601483770331017282701354382190472661583444774920297367889959312517009682740631673940840597651219956142053575328811350770919852725338374144
  4. c = 2475592349689790551418951263467994503430959303317734266333382586608208775837696436139830443942890900333873206031844146782184712381952753718848109663188245101226538043101790881285270927795075893680615586053680077455901334861085349972222680322067952811365366282026756737185263105621695146050695385626656638309577087933457566501579308954739543321367741463532413790712419879733217017821099916866490928476372772542254929459218259301608413811969763001504245717637231198848196348656878611788843380115493744125520080930068318479606464623896240289381601711908759450672519228864487153103141218567551083147171385920693325876018
  5. def bivariate(pol, XX, YY, kk=4):
  6. N = pol.parent().characteristic()
  7. f = pol.change_ring(ZZ)
  8. PR, (x, y) = f.parent().objgens()
  9. idx = [(k - i, i) for k in range(kk + 1) for i in range(k + 1)]
  10. monomials = list(map(lambda t: PR(x ** t[0] * y ** t[1]), idx))
  11. # collect the shift-polynomials
  12. g = []
  13. for h, i in idx:
  14. if h == 0:
  15. g.append(y ** h * x ** i * N)
  16. else:
  17. g.append(y ** (h - 1) * x ** i * f)
  18. # construct lattice basis
  19. M = Matrix(ZZ, len(g))
  20. for row in range(M.nrows()):
  21. for col in range(M.ncols()):
  22. h, i = idx[col]
  23. M[row, col] = g[row][h, i] * XX ** h * YY ** i
  24. # LLL
  25. B = M.LLL()
  26. PX = PolynomialRing(ZZ, 'xs')
  27. xs = PX.gen()
  28. PY = PolynomialRing(ZZ, 'ys')
  29. ys = PY.gen()
  30. # Transform LLL-reduced vectors to polynomials
  31. H = [(i, PR(0)) for i in range(B.nrows())]
  32. H = dict(H)
  33. for i in range(B.nrows()):
  34. for j in range(B.ncols()):
  35. H[i] += PR((monomials[j] * B[i, j]) / monomials[j](XX, YY))
  36. # Find the root
  37. poly1 = H[0].resultant(H[1], y).subs(x=xs)
  38. poly2 = H[0].resultant(H[2], y).subs(x=xs)
  39. poly = gcd(poly1, poly2)
  40. x_root = poly.roots()[0][0]
  41. poly1 = H[0].resultant(H[1], x).subs(y=ys)
  42. poly2 = H[0].resultant(H[2], x).subs(y=ys)
  43. poly = gcd(poly1, poly2)
  44. y_root = poly.roots()[0][0]
  45. return x_root, y_root
  46. PR = PolynomialRing(Zmod(N), names='x,y')
  47. x, y = PR.gens()
  48. pol = 2 ** 923 * x + y + p0
  49. x, y = bivariate(pol, 2 ** 101, 2 ** 101)
  50. p = 2 ** 923 * x + y + p0
  51. q = N // p
  52. print(p)
  53. print(q)
  54. #p = 128316995030969915324601380638393686940451314028029847288048482890311391444850912731036515693294185876094548175445535907681477441597112946116144447110741965169166242532652418536974280062421433117597771884350348782061336417186073214602745554392782563801452571827824278044551188124531752043347553290530270395447
  55. #q = 93954572959047928343011750832384121004425708514797352779274995744988621009506935222019019171047965401245311260375453924225343494879356560534244565490966730992944825873075214193169703861204568164588812686254102717072093288624081316906954278209584119401170082334613277995260895181460040974631476760070669352467
  1. from Crypto.Util.number import *
  2. p = 128316995030969915324601380638393686940451314028029847288048482890311391444850912731036515693294185876094548175445535907681477441597112946116144447110741965169166242532652418536974280062421433117597771884350348782061336417186073214602745554392782563801452571827824278044551188124531752043347553290530270395447
  3. q = 93954572959047928343011750832384121004425708514797352779274995744988621009506935222019019171047965401245311260375453924225343494879356560534244565490966730992944825873075214193169703861204568164588812686254102717072093288624081316906954278209584119401170082334613277995260895181460040974631476760070669352467
  4. c = 2475592349689790551418951263467994503430959303317734266333382586608208775837696436139830443942890900333873206031844146782184712381952753718848109663188245101226538043101790881285270927795075893680615586053680077455901334861085349972222680322067952811365366282026756737185263105621695146050695385626656638309577087933457566501579308954739543321367741463532413790712419879733217017821099916866490928476372772542254929459218259301608413811969763001504245717637231198848196348656878611788843380115493744125520080930068318479606464623896240289381601711908759450672519228864487153103141218567551083147171385920693325876018
  5. n = p * q
  6. e=65537
  7. d = inverse(e, (p - 1)*(q - 1))
  8. m = int(pow(c, d, n))
  9. print(long_to_bytes(m))
  10. #flag{although_11ts_norma11_tis_still_stay_dsadsa}

School of CRC32

  1. import secrets
  2. from secret import flag
  3. import zlib
  4. ROUND = 100
  5. LENGTH = 20
  6. print('Extreme hard CRC32 challenge')
  7. print('ARE YOU READY')
  8. for i in range(ROUND):
  9. print('ROUND', i, '!'*int(i/75 + 1))
  10. target = secrets.randbits(32)
  11. print('Here is my CRC32 value: ', hex(target))
  12. dat = input('Show me some data > ')
  13. raw = bytes.fromhex(dat)
  14. if zlib.crc32(raw) == target and len(raw) == LENGTH:
  15. print("GREAT")
  16. else:
  17. print("OH NO")
  18. exit()
  19. print("Congratulation! Here is your flag")
  20. print(flag)

考点:crc32的逆向(碰撞),参考:https://pypi.org/project/crcsolver/

exp:

  1. from Crypto.Util.number import *
  2. import crcsolver
  3. import zlib
  4. from pwn import *
  5. sh = remote("IP",端口号)
  6. for i in range(100):
  7. data = sh.recvuntil(b"Here is my CRC32 value:")
  8. c = eval(sh.recvline().decode())
  9. m = crcsolver.solve(b'_'*20, range(8*20), c, zlib.crc32) #关键代码
  10. message = hex(bytes_to_long(m))[2:].zfill(40) #传给服务器的数据需要是16进制形式,而且需填充满40位才行,否则会报错。
  11. sh.sendlineafter(b"Show me some data >",message)
  12. sh.interactive()

NewStarCTF 2023 公开赛道 WEEK5|CRYPTO WP的更多相关文章

  1. bugku crypto wp上半部分汇总

    1.滴答~滴 摩斯码,在线解开. 2. 栅栏密码,在线解就出flag了. 3. Ook解密,由.?!Ook组成密文,在线网站解密 4.这不是摩斯密码 有点像jsfuck,发现又不是,因为不会出现大于号 ...

  2. BUUCTF Crypto

    BUUCTF 几道crypto WP [AFCTF2018]Morse 简单的莫尔斯密码,最直观的莫尔斯密码是直接采用空格分割的点和划线,这题稍微绕了一下使用的是斜杠来划分 所以首先将斜杠全部替换为空 ...

  3. 2021羊城杯比赛复现(Crypto)

    bigrsa 题目: from Crypto.Util.number import * from flag import * n1 = 10383529640908175186077053551474 ...

  4. 海王星给你好看!FineUI v4.0公测版发布暨《你找BUG我送书》活动开始(活动已结束!)

    <FineUI v4.0 你找BUG我送书>活动已结束,恭喜如下三位网友获得由 FineUI 作者亲自翻译的图书<jQuery实战 第二版>! 奋斗~ 吉吉﹑ purplebo ...

  5. BUUCTF Crypto_WP(2)

    BUUCTF Crypto WP 几道密码学wp [GXYCTF2019]CheckIn 知识点:Base64,rot47 下载文件后,发现一个txt文件,打开发现一串base64,界面之后出现一串乱 ...

  6. NewStarCTF 公开赛 2022 RE WP

    Week 2 Re 前可见古人,后得见来者 chipher = [0x51, 0x5B, 0x4C, 0x56, 0x59, 0x4D, 0x50, 0x56, 0x54, 0x43, 0x7D, 0 ...

  7. DawgCTF wp(re和crypto)

    简单写写思路,想看详解的..我脚本有些丢失了..师傅请移步. 挂了个vpn,算正式打这种国际赛,全是英文.上去打了两天,昨晚晚上划水了一晚上补作业...,re那时候写出来三道,Potentially ...

  8. 第二届 BJD wp(reverse和crypto)

    re 1.第一题拖入ida,flag就是直接明文摆着 2.第二题是8086的程序,拖入ida,发现有个jmp无限跳转,可能是段寄存器被修改了,ida无法将后面的汇编识别出来,所以后面才有很多无效数据, ...

  9. MRCTF (re和crypto)wp

    RE: 一.PixelShooter(这题比赛我居然没看,靠,血亏,所以做不出来就不要一直死怼,这题挺好写的,) unity一般是用c#写的,刚好又是apk,可以用dnspy来反编译看看,在源码中找到 ...

  10. HGAME 2023 WP week1

    WEEK1 web Classic Childhood Game 一眼顶真,直接翻js文件,在Events.js中找到mota(),猜测是获取flag,var a = ['\x59\x55\x64\x ...

随机推荐

  1. 简单几行实现sliver上线提醒

    准备魔改sliver去掉一些特征什么的,这里记录一下最简单实现上线消息通过企业微信机器人提醒的方式,这很简单也有很多不足还需要接着改的 protobuf中对消息Beacon和Session的定义如下, ...

  2. Spring 七种事务传播性介绍

    作者:vivo 互联网服务器团队 - Zhou Shaobin 本文主要介绍了Spring事务传播性的相关知识. Spring中定义了7种事务传播性: PROPAGATION_REQUIRED PRO ...

  3. Python——第二章:元组

    元组 tuple 使用小括号组成 特点: 元组是不可变的,固定了某些数据. t = ("张无忌", "赵敏", "呵呵哒") print(t ...

  4. Docker、pre-commit 导致的 git commit 报错:找不到 python 3.8

    到这个问题的原因可能有很多,这里只是记录下针对我遇到这这跟题的原因及解决方法 问题描述 执行 git commit 命令,报错 /usr/bin/env: 'python3.8': No such f ...

  5. C++面试复习总结

    C++面试 本人20年3到4月内面了近十家公司,整理一下C++客户端问的多的基础问题 另:操作系统面试总结,OpenGL面试总结,计算机网络面试总结 代码到可执行程序 预处理:条件编译,头文件包含,宏 ...

  6. 国内AI大模型 VS chatgpt (20)-- H265/H264有何不同,h265有什么优势?

    H265/H264有何不同,h265有什么优势? 文心一言: H.264和H.265是两种不同的视频编码标准,它们在压缩质量和带宽需求方面有所不同. H.264是一种高效的视频压缩标准,它的编码单位是 ...

  7. 实例讲解基于Sermant快速开发服务治理插件

    本文分享自华为云社区<Sermant框架下的服务治理插件快速开发及使用指南>,作者: 华为云开源 . Sermant是基于Java字节码增强技术的云原生无代理服务网格,它具有非侵入.插件化 ...

  8. 实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题

    摘要:目前复杂问题包括两种:含约束的问题和多跳关系问题.本文对ACL2020 KBQA 基于查询图生成的方法来回答多跳复杂问题这一论文工作进行了解读,并对相关实验进行了复现. 1.摘要 1.1 复杂问 ...

  9. 使用Mask R-CNN模型实现人体关键节点标注

    摘要:在本案例中,我们将展示如何对基础的Mask R-CNN进行扩展,完成人体关键节点标注的任务. 本文分享自华为云社区<使用Mask R-CNN模型实现人体关键节点标注>,作者: 运气男 ...

  10. 解放重复劳动丨华为云IoT API Explorer对接小程序实现系统化应用

    摘要:<物联网平台接口调用实验>详细讲解了API Explorer的应用,根据提供的接口,结合真实案例,制作了一个小程序,真正的把它应用起来,解放重复劳动,小程序是一个很好的平台,作为应用 ...