本文来自:天权信安网络安全生态圈
作者:JDI战队
天权信安网络安全团队|招新啦
团队介绍
JOIN US ▶▶▶
天权信安网络安全团队(简称“天权信安”),成立于2022年,是一支研究红蓝对抗、内网渗透、红队武器库、CTF竞赛及其网安相关活动的安全团队。这里聚集着一群有技术有担当有理想、热爱信安奉献信安的多方面专业人才。 天权信安的“天权”来源于北斗七星,又称为文曲星,它代表着天资聪颖,能力超群,也象征着天权信安的高标准、高水平与高质量,体现着我们的宗旨--打造一支作风优良、实力强劲、团结协作的精英团队,用技术与毅力共同守护网络安全。
JOIN US ►►►
◄◄◄ JOIN US
天权信安官网
https://www.megrezsec.cn
招新&合作联系:megrez@megrezsec.cn
天权Megrez公开赛交流群:895959607
JOIN US ►►►
◄◄◄ JOIN US
快来加入天权信安网络安全团队吧!
一起学习网络安全
知识与技能,
创造属于自己的精彩人生!
01
瞅啥
解压压缩包,得到png,使用zsteg -e rabbit.png得到压缩包
010打开图片,修改宽高
可以看到密码为aptx4869,解压压缩包,得到docx文件,打开没有发现flag,全选文
字取消隐藏文字得到flag
2022 / 9 / 26
02
MISC 103
file badimages查看文件类型
ext3文件,根据题目提示可以知道应该是文件恢复,在网上找到恢复ext3的方法
extundelete badimages --restore-all
打开产生的文件夹可以得到flag
2022 / 9 / 26
03
没有后缀的文件
file一下文件,看属性
binwalk一下得到了一些东西
file 后发现都是gzip文件,而且很有规律,解压几个看了一下都是字母,猜测里面应
该有东西,写个代码解压一下然后拼在一起得到了flag
import os
import time
for i in range(1,243):
os.system("mv %s %s.gz"%(str(i),str(i)))
os.system("gzip -d %s.gz"%(str(i)))
flag=''
for j in range(1,243):
with open("%s"%str(j)) as f:
flag+=f.read()
print(flag)
2022 / 9 / 26
04
古典
ON4W45D3G44TC4TSGU3DKLLOONYXELJUG43TELJYHFXDOLJWOBYXC4JWOEYDQNRTO
N6Q====
可能是base,只有大写字母和数字,应当不是base64,可能是base32
base32解码得到
synt{791rr565-nsqr-4772-89n7-6pqqq6q0863s}
flag{791ee565-afde-4772-89a7-6cddd6d0863f}
2022 / 9 / 26
05
LCG
from secret import flag
from Crypto.Util.number import *
seed = bytes_to_long(flag)
bits = seed.bit_length()while True:
p = getPrime(bits+1)
if p > seed:
break
print(p)
a = getRandomRange(1, p)
b = getRandomRange(1, p)
for _ in range(3):
seed = (a*seed + b) % p
print(seed)
#
12898764218576263193222049548139163022604362631690753845272676221
2389321270926330459165141807985514151
#
10625120463865295522826344308714113219377267978594581234860641145
0231736217554078867269536273823941317
#
10856769641548818901512852861646009855879585337286830004221684591
2719954168424158333151674140021074736
#
67151728692480947558775166912293436958127879133219560190637295597
591667555742533671408274392843074079
查找LCG资料
线性同余方法(LCG)是一种产生伪随机数的方法。
线性同余法最重要的是定义了三个整数,乘数 a、增量 b和模数 m,其中a,b,m是产生
器设定的常数。
假设现在有随机数X1=1234,乘数a=2,增量b=3,模数m=1000
那么下一个随机数X2=(2*1234+3)%1000=2471%1000=471
解题用到的公式:
题目给出了给了n和3次lcg的output序列
用公式2:a=((Xn+2-Xn+1)(Xn+1-Xn)-1)%n
用已知信息可以求出a
再用a,output序列,n求出b
根据output序列第一个反推出初始seed
即可求解
exp如下:
from Crypto.Util.number import *
if __name__ == "__main__":
n =
1289876421857626319322204954813916302260436263169075384527267622
12389321270926330459165141807985514151
output =
[1062512046386529552282634430871411321937726797859458123486064114
50231736217554078867269536273823941317,
1085676964154881890151285286164600985587958533728683000422168459
12719954168424158333151674140021074736,67151728692480947558775166
91229343695812787913321956019063729559759166755574253367140827439
2843074079]
MMI = lambda A, n,s=1,t=0,N=0: (n < 2 and t%N or MMI(n, A%n,
t, s-A//n*t, N or n),-1)[n<1] #逆元计算
a=(output[2]-output[1])*MMI((output[1]-output[0]),n)%n
ani=MMI(a,n)
b=(output[1]-a*output[0])%n
seed = (ani*(output[0]-b))%n
plaintext=seed
print(long_to_bytes(plaintext))
2022 / 9 / 26
06
debug32
将对应的函数取出单独跑一下即可得到flag:
07
迷宫又来了
找到map,简单的20*10迷宫,直接手动解:
除去边框,从左上角走至右下角:
部分荣誉
JOIN US ▶▶▶
第六届“强网杯”全国网络安全挑战赛 线上赛72名
第五届”楚慧杯“网络空间安全实践能力竞赛二等奖
第五届“强网”拟态防御国际精英挑战赛线上预选赛67名
第六届”楚慧杯“网络空间安全实践能力竞赛决赛二等奖
第二届“红明谷”杯数据安全大赛线上赛第44名
第二届网刃杯网络安全大赛荣获线上赛第22名
首届数字空间安全攻防大赛线上赛33名
2020 年参与某机关单位护网被评为优秀团队等荣誉
2021年 第十四届全国大学生信息安全竞赛华东北赛区二等奖
2021年 蓝桥杯全国大学生算法竞赛省赛二等奖
2021年西湖论剑·中国杭州网络安全技能大赛初赛第6名
2022年 XCTF国际联赛个人能力认证TOP20%
2022 TQLCTF高校赛线上赛 23名
2022SUSCTF2022荣获线上赛 46名
*CTF2022荣获线上赛第39名
ACTF 2022线上赛第42名
2022数字中国创新大赛虎符网络安全赛道全国总决赛优胜奖
2022年第五届“巅峰极客”网络安全技能挑战赛1线上赛37名
2022安洵杯国际赛 WMCTF线上赛24名
2022第三届网鼎杯网络安全大赛青龙组行业49名
2022第三届网鼎杯网络安全大赛玄武组线上赛29名
2022年羊城杯网络安全大赛线上赛30名
原文始发于微信公众号(天权信安):2022年全国大学生信息安全竞赛安徽省赛
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论