前言
这是博主这队最终排名
害,出题人。。。。
我想说。。。。
有点啥,你应该懂的 QWQ——>TWT
(╯‵□′)╯︵┻━┻
一定要看到最后,看看博主是怎么破防的!!!
话不多说!!!
上题
Crypto:签到
1,下载宽窄文件,然后打开
看完之后没啥思路,文件提示宽窄,而且重复说宽窄,没事
我直接拉近——>随波逐流
提示文件包含零宽字符
直接直接百度一波
点第一个,然后打开第一个网页
再然后把文件内容全部复制进去,点解密,flag?
这就出来了???
看来真是签到(不屑一笑)
博主这时觉得这也没啥
直接分来了
上第二题
Crypto:ezCrypto
一眼看,哟哟哟,这不就是RSA加密嘛
不过数咋那么大
跟上课课本不一样啊!!!
没事
我有搜索
先从n中求取p和q
把n填进去,收获p q
再问问AI有没有可以飞出明文m的代码
哎呀呀我直接问到了
# 计算欧拉函数φ(n)
def phi(n):
return (p - 1) * (q - 1)
# 扩展欧几里得算法求模逆
def extended_gcd(a, b):
if a == 0:
return b, 0, 1
else:
gcd, x, y = extended_gcd(b % a, a)
return gcd, y - (b // a) * x, x
# 计算私钥d
def calculate_d(e, phi_n):
gcd, x, _ = extended_gcd(e, phi_n)
if gcd!= 1:
raise ValueError("e和φ(n)不互质,无法计算私钥。")
return x % phi_n
# RSA解密函数
def rsa_decrypt(c, d, n):
return pow(c, d, n)
# 已知参数
e = 65537
n = 1455925529734358105461406532259911790807347616464991065301847
c = 69380371057914246192606760686152233225659503366319332065009
# 假设已经分解得到p和q(这里需要实际分解n来获取)
p = 1201147059438530786835365194567 # 示例值,实际需要计算
q = 1212112637077862917192191913841 # 示例值,实际需要计算
phi_n = phi(n)
d = calculate_d(e, phi_n)
plaintext = rsa_decrypt(c, d, n)
print(plaintext)
哎呀呀
直接飞出明文了
但是明文不知道是啥内容
我们直接问AI有没有把明文飞出字符串的代码
哎呀呀也是直接问到了
# 得到的明文
m = 584734024210318745406046669953309948776602881661
# 将整数转换为字节串,假设每个字节8位(根据实际情况可能需要调整)
byte_length = (m.bit_length() + 7) // 8
m_bytes = m.to_bytes(byte_length, 'big')
# 尝试解码字节串为字符串
try:
decoded_string = m_bytes.decode('utf-8')
print(decoded_string)
except UnicodeDecodeError:
print("无法使用UTF-8解码,可能需要尝试其他编码方式")
我直接一运行
哎?
这啥??
flag???
不是?
这就出来了???
直接下一题Crypto:神秘dp
我去,感觉这题有点。。。。
感觉斗宗强者的威压来了
满脸流汗的我默默打开了一个网站
就是这个———>http://www.factordb.com/
有n我就直接填进去
p q 到手解题我有
得到p和q
我直接问AI要代码求d
from gmpy2 import gcd, invert
def extended_gcd(a, b):
if a == 0:
return (b, 0, 1)
else:
g, y, x = extended_gcd(b % a, a)
return (g, x - (b // a) * y, y)
def modular_inverse(a, m):
g, x, y = extended_gcd(a, m)
if g!= 1:
raise ValueError("模逆不存在")
return x % m
def calculate_d(e, n, dp):
p =105038194193899515019447140405205579493289210244572767409545440358851163280965395453074976398044017243177911159096972243867985372174027224124181767942149308681063335044762355577934881504502469182724481949671518205998572766264483054891139270362336019492873565945485673532086972823698106471372599520368545108299 # 这里需要根据n的值计算出p,假设你有相应的函数或已知条件来获取p
q =131875826716323523148433295878953050557752317511962437375097305678556817762514768704278183959540938622638859584695873987803639891091171158984491576191575189523381929708029006917399486577694013126044860470568409738236462778680818847784162139064455152770977552909157838301186145084657447139653926320540680063339 # 同样需要根据n的值计算出q
phi_n = (p - 1) * (q - 1)
try:
d = modular_inverse(e, phi_n)
return d
except ValueError as e:
print(e)
return None
# 示例用法
e = 65537
n = 13851998696110232034312408768370264747862778787235362033287301947690834384177869107768578977872169953363148442670412868565346964490724532894099772144625540138618913694240688555684873934424471837897053658485573395777349902581306875149677867098014969597240339327588421766510008083189109825385296069501377605893298996953970043168244444585264894721914216744153344106498382558756181912535774309211692338879110643793628550244212618635476290699881188640645260075209594318725693972840846967120418641315829098807385382509029722923894508557890331485536938749583463709142484622852210528766911899504093351926912519458381934550361
dp = 100611735902103791101540576986246738909129436434351921338402204616138072968334504710528544150282236463859239501881283845616704984276951309172293190252510177093383836388627040387414351112878231476909883325883401542820439430154583554163420769232994455628864269732485342860663552714235811175102557578574454173473
d = calculate_d(e, n, dp)
if d is not None:
print("计算得到的d值为:", d)
else:
print("无法计算d值")
得到d之后直接问AI求明文m的代码
from gmpy2 import powmod
# 已知参数
e = 65537
n = 13851998696110232034312408768370264747862778787235362033287301947690834384177869107768578977872169953363148442670412868565346964490724532894099772144625540138618913694240688555684873934424471837897053658485573395777349902581306875149677867098014969597240339327588421766510008083189109825385296069501377605893298996953970043168244444585264894721914216744153344106498382558756181912535774309211692338879110643793628550244212618635476290699881188640645260075209594318725693972840846967120418641315829098807385382509029722923894508557890331485536938749583463709142484622852210528766911899504093351926912519458381934550361
c = 6181444980714386809771037400474840421684417066099228619603249443862056564342775884427843519992558503521271217237572084931179577274213056759651748072521423406391343404390036640425926587772914253834826777952428924120724879097154106281898045222573790203042535146780386650453819006195025203611969467741808115336980555931965932953399428393416196507391201647015490298928857521725626891994892890499900822051002774649242597456942480104711177604984775375394980504583557491508969320498603227402590571065045541654263605281038512927133012338467311855856106905424708532806690350246294477230699496179884682385040569548652234893413
d = 1762543557484523626869267386658523242327657846815626043236382668443686283010501708800863330583884298046833008276676883454635218836506887404121305520759759818361278686791783295937503452083032037722561765996478272538982877422303706789648042078983579221987384067820618110547125401005752274804888596114744157583384114463261758091836801630198977039993393321780566541516866446408316764800253915736273164925019496034759333342295199384703710958327978741132453373673523024144020827574443378350680955101625988204860752831231489087620433426231725615934253837978035190579839247903256349149482182579716152710013783065689685574701
# 计算明文
m = powmod(c, d, n)
print(m)
也是成功得到明文
然后思路就是跟上一题一样
明文转字符串
# 得到的明文
m = 136143999223203553056382253757349587837
# 将整数转换为字节串,假设每个字节8位(根据实际情况可能需要调整)
byte_length = (m.bit_length() + 7) // 8
m_bytes = m.to_bytes(byte_length, 'big')
# 尝试解码字节串为字符串
try:
decoded_string = m_bytes.decode('utf-8')
print(decoded_string)
except UnicodeDecodeError:
print("无法使用UTF-8解码,可能需要尝试其他编码方式")
有点easy啊
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈(疯狂笑自信癫峰)
Forensic:签到
得到三张图片
一眼看去第一张看那只大熊猫还有那个IFS国际金融中心
上网一搜这个金融中心
就知道这个城市就是在成都
接下来第二张
直接问AI
AI说可能是宽窄巷子
然后上网查了一下宽窄巷子的几张图片
下面这张,初见端倪对照一看,哟???!!!
确定是宽窄巷子了
最后一张
一看右下角这个变脸,大概率是四川的
根据前面两张图片可以推出都图片在成都这个地
先是成都,然后又是在成都里面的宽窄巷子,那么最后这一张有没有可能在宽窄巷子里面的某个店呢?
在高德地图上找了找
哎??这是川剧变脸,而且看店的上面图文跟给的图片差不多
难道??
填flag的时候真的成功了
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈(疯了)
Forensic:②
因为看这题解出来的人比较多
然后才选这题
得到图片
给AI看看他说可能是莫斯科的克林姆林宫
然后上地图看了一下,发现红色城墙
找了大概一个多小时
确定位置是在这个地方拍的
根据题目描述
纬度在前经度在后取三位小数
经纬度进行MD5加密
填上了flag真是不容易啊 TWT
最后就是破防的一题
我真的是********
Misc:简简单单
注意啊
题目标着简简单单
我真的是****
得到文件打开一看
啥东西???
他足足有差不多70000的字
用不了随波逐流了
问了下AI他说可能是ASCLL码或者UTF-8码
然后直接上网搜在线解码
初见端倪
这个社会主义核心价值观解码
在这套娃呢
我真的是***
十六进制解码
看见一堆动物
一看以为是十二生肖
仔细一看
那就取表情解码emojie
这这这???
还有呢?
那就继续!
这个c9g9看的有点熟悉
是题目的那个c9g9吗?
他说c9g9——>base62
那就只能惟命是从了QWQ
啊?flag呢?
我***
还有呢?
不过这个字符有点少
上随波逐流!
最后屁都没出白费一场
根据博主所学博主可以肯定这个就是base家族的东西
通过多次尝试解出来了
顺着这条路
base58
接着base32
然后base91
然后然后base64
天啊他终于出来了
泪目!
我们来看看出题人套了多少层!
十层!!!我的妈!!
出题人你是人吗?
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊(真疯了)
Misc:sign in
这题真的是用了我一天的时间还没解出来
最后看官方WP的时候我真的想
真的想-----------------
真的真的想-------
来看解题过程
由于题目提示罗马共和国独裁官
搜一下那就是你了 凯撒!!!
太多了足足有好几W用不了随波逐流
上网弄了一下
运气真好(我没有开心)
真没开心
一眼一看就是base64转图片
转出来一张奶龙
到这步之后弄了一整天
都没弄出来
最后看了官方WP
我真的是****
来看看我用了多少种方法
这只是其中的一部分
我想出题人真是人吗?
最后用这个网站通过不可思议的方式分离出了flag
我真的不想对出题人干嘛
真的不想
说实话是真的不想
如果是你你应该也不想的
一天时间我嘞个豆啊!
怪我是小白没实力吧T_T T_T
总结
该说的还得说
挺有意思的一次比赛,起码比网鼎杯,强网杯有意思QWQ
收获还是有的
荣获第三页
别走点个赞再走T_T呜呜呜呜呜呜呜
标签:phi,return,gcd,AI,明文,CTF,wp,print,CN From: https://blog.csdn.net/qq_62073188/article/details/144494116