御网杯 2024

打印 上一主题 下一主题

主题 651|帖子 651|积分 1957

Crypto

crypto1

题目:
  1. # coding:utf-8
  2. # python 3.6
  3. from flag import flag
  4. import re
  5. s = "fst3Sem8Wgnobcd9+++++uv2JKpUViFGHz0QRMyjkA7NaBC14wXYxh5OP/DEqrZIl6LT"
  6.   
  7. assert re.match(r'^DASCTF\{[a-f0-9]+\}$',flag) != None
  8. def encode(inputs):
  9.     bin_str = []
  10.     for i in inputs:
  11.         x = str(bin(ord(i))).replace('0b', '')
  12.         bin_str.append('{:0>8}'.format(x))
  13.     outputs = ""
  14.     nums = 0
  15.     while bin_str:
  16.         temp_list = bin_str[:3]
  17.         if (len(temp_list) != 3):
  18.             nums = 3 - len(temp_list)
  19.             while len(temp_list) < 3:
  20.                 temp_list += ['0' * 8]
  21.         temp_str = "".join(temp_list)
  22.         temp_str_list = []
  23.         for i in range(0, 4):
  24.             temp_str_list.append(int(temp_str[i * 6:(i + 1) * 6], 2))
  25.         if nums:
  26.             temp_str_list = temp_str_list[0:4 - nums]
  27.         for i in temp_str_list:
  28.             outputs += s[i]
  29.         bin_str = bin_str[3:]
  30.     outputs += nums * '='
  31.     return outputs
  32.   
  33. c = encode(flag)
  34. print(c)
  35. # +Se++h+mF5u0d++Oc++RbQJYbyuMb++0cYuQc+SwdmK0d+fwcYRYG+==
复制代码
原题:[河北银行 2022 CTF]_ctf银行-CSDN博客
思路:
  1. 一个 base64 变表就是表中有多个 + ,就需要爆破一下。就行
复制代码
exp:
  1. s = "fst3Sem8Wgnobcd9+++++uv2JKpUViFGHz0QRMyjkA7NaBC14wXYxh5OP/DEqrZIl6LT"
  2. h = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
  3. c = '+Se++h+mF5u0d++Oc++RbQJYbyuMb++0cYuQc+SwdmK0d+fwcYRYG+'
  4. #    +Se++h+mFYVPJv+zb+SYK+V4dvKRKQSXJ+uzJ++zJ+uRK3JXK+bYG+==
  5. m = ''
  6. for i in c:
  7.     print(s.index(i))
  8.     p = s.index(i)
  9.     m+=h[p]
  10. print("m=",m)
  11. #m = "fQ==" #
  12. from base64 import *
  13. import string
  14. ss = b'0123456789abcdef-_{}'
  15. #ss = string.printable.encode()
  16. flag = ''
  17. def decode(idx, mm):
  18.     #print(mm, idx)
  19.     if idx>=4:
  20.         #print(idx, mm)
  21.         try:
  22.             t = b64decode(mm)
  23.         except:
  24.             return
  25.         #print(t)
  26.         for v in t:
  27.             if v not in ss:
  28.                 break
  29.         else:
  30.             print("xxx ",t)
  31.         return
  32.     if mm[idx] == 'Q':
  33.         for v in "QRSTU":
  34.             if idx == 0:
  35.                 decode(idx+1, v+mm[1:])
  36.             elif idx==3:
  37.                 decode(idx+1, mm[0:3]+v)
  38.             else:
  39.                 decode(idx+1, mm[0:idx]+v+mm[idx+1:])
  40.     else:
  41.         decode(idx+1, mm)
  42. m = 'QEFQQ1QGe2ViOQQ3NQQkMjYzMmVlMQQiNzVjNQExOGZiOQAxNzkzfQ=='
  43. m = m[8:]  #DASCTF
  44. for v in range(0, len(m), 4):
  45.     print('---------',v, m[v: v+4])
  46.     decode(0, m[v: v+4])
  47. # DASCTF{eb94754d2632ee14b75c5118fb901793}
  48. # DASCTF{eb95754d2632ee14b75c5118fb901793}
复制代码
justmath

exp:
  1. from sage.symbolic.relation import solve
  2. x = var('x')
  3. y_value = [3149069, 2271689, 2337632, 3068562, 67697, 2337632, 3068562, 67697, 2143547, 2543093, 1844472, 2206998, 67697, 1844472, 2686547, 2020317, 67697, 3149069, 2271689, 2081324, 67697, 2143547, 2543093, 1844472, 2206998, 67697, 2337632, 3068562, 67697, 2143547, 2543093, 1844472, 2206998, 3752378]
  4.   
  5. flag = ""
  6. for i in y_value:
  7.     equation = 2*x^3 + 2*x^2 + 3*x + 17 == i
  8.     solutions = solve(equation, x)
  9.     flag += chr(solutions[2].rhs())
  10. print(flag)
  11. from Crypto.Util.number import *
  12. flag = b"this is flag and the flag is flag{"
  13. n = 2260375559104345425590426977960386256287009777233277062625487017885931446911942921201492850167115455071935831283269948569220356763988762825230315520633702443866690239945242948370781975714325308306543337600783340792458991506685843729962897796956171467876531084194426101796617903015810156717396227079274786269217370618477266867389155551378798713259843750289765858717627925689021561352438080039804957145513478767641674644346609224034274906228784593435462413278410143
  14. e = 3
  15. c = 1683427726786225271109289808778075351906457081282891335272956455076290407290946927840180672315908981114229434899424882579823897506730018911375238394076293908946844135295984336122170362703361647325169444373502665686779049846717305377396296752361918921007897449738856962248716579014267597667341690453460130215215256776249910808564677407383996700090361822122676428069577517468851642648993930679875398568383201032360229083338487146673018350740571719960730053254352184
  16. R.<x> = PolynomialRing(Zmod(n))
  17. for i in range(40):
  18.     mhigh = bytes_to_long(flag + b"\x00"*32 + b"}")
  19.     f = (mhigh + x)^e - c
  20.     res = f.small_roots(X=256^i,beta=0.4,epsilon=0.05)
  21.     if res != []:
  22.         print(res)
  23.         m = mhigh + int(res[0])
  24.         print(long_to_bytes(m))
复制代码
flag:flag{0f5a1806d07f030767e113352727ea2d}
base

题目:
<blockquote>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表