前言
感谢跟我坐了一天大牢的队友~
wp是赛后复现写的,web环境当时没有做好截图
这里是引用
题解
A_Small_Secret
题目压缩包中有一个提示和另一个压缩包On_Zen_with_Buddhism.zip,提示内容如下:

直接把提示放到basecrack中跑一下

解密的结果asdadad就是On_Zen_with_Buddhism.zip的解压密码

打开txt可以比较明显的看到PK文件头,进一步确认可以看出是一个word文件,因此把flag.txt文件后缀改为docx,用word打开后把所有文字的颜色修改一下即可看到关键信息
flag{U2FsdGVkX1/nVMt/cXalqwb8VpS2mDk9UkTaHRPPq5TAtH8XxYVAwxtoDKe/yTN4 zBas0WHmW50e2QwglywbKyCRNsVxaKsbwwdDlcBEg20=}
将密文部分用AES算法进行解密,密码就是压缩包的解压密码asdadad,

最后解一下base64即可

next-prime
题目如下:
from Crypto.Util.number import *
from gmpy2 import next_prime, iroot
from flag import flag
assert flag[0:4]==b'flag'
m = bytes_to_long(flag)
assert size(m)<500
p = getPrime(512)
q = next_prime(p)
n = p * q
print('n=', n>>520)
e = 0x10001
c = pow(m, e, n)
print('c=', c)
'''
n= 28576274811010794362153160897556935178530640825011441539841241257190782139295561904323347128956873569754645071205043238985141474388531008367238218822591
c= 49502875285578675438052554215266678403659290915102322948363030271494959804587081871467110614683972929037615883922743651431683465100061968204901334627149795829429950385848753728500177164800064208215503246868631076011505268371936586645321659884527055007299822625570713613996139223348709621258028349513737798120
'''
这里主要的考点是n的后520位被抹掉了,但是由于p,q之间非常接近,并且n的低位对开方的影响比较小并且p,q都是质数,因此我们可以尝试爆破符合条件的p和q,wp如下:
import gmpy2
from Crypto.Util.number import *
from sympy.ntheory import prevprime,nextprime
n= 28576274811010794362153160897556935178530640825011441539841241257190782139295561904323347128956873569754645071205043238985141474388531008367238218822591
c= 49502875285578675438052554215266678403659290915102322948363030271494959804587081871467110614683972929037615883922743651431683465100061968204901334627149795829429950385848753728500177164800064208215503246868631076011505268371936586645321659884527055007299822625570713613996139223348709621258028349513737798120
e= 0x10001
mid=gmpy2.iroot(n<<520,2)[0]
while (mid*nextprime(mid))>>520!=n or not isPrime(mid):
mid-=2
p=mid
q=nextprime(p)
d=gmpy2.invert(e,(p-1)*(q-1))
if b'flag' in long_to_bytes(pow(c,d,p*q)):
print(long_to_bytes(pow(c,d,p*q)))
loopQR
开局一堆图

用Stegsolve随便打开一张图片,可以在不同颜色通道上看到二维码图片

参考Boogipop师傅编写解密脚本如下:
from pyzbar.pyzbar import decode
from PIL import Image
import os
def decode1(img, channel, index=0):
if channel in img.mode:
new_image = Image.new('1', img.size)
new_image_data = new_image.load()
img_data = img.load()
channel_index = img.mode.index(channel)
for x in range(img.size[0]):
for y in range(img.size[1]):
color = img_data[x, y]
channel = color[channel_index]
plane = bin(channel)[2:].zfill(

该博客是CTF比赛题目赛后复现的题解。包含A_Small_Secret、next-prime等多道题,涉及文件解压、密码爆破、二维码解密、web协议绕过、流量包分析等内容,还给出了部分题目的解题脚本,最后推荐参考其他师傅的题解。

5419

被折叠的 条评论
为什么被折叠?



