面具下的flag

下载完附件打开,《你的名字》

拖进010发现一推PS字眼,但是拖进PS没有任何线索,拖进Kali分离一下试试

OK,存在压缩包,分离出来是一个带了伪加密的压缩包,解开之后是一个vmdk文件

看了一眼WP,是用7z解压

试一试,格式是这样的

1
7z x flag,vmdk -o./

key1

+++++ +++++ [->++ +++++ +<] >.+ +++++ .<+++ [->– -<]>- -.+++ +.<
[ ->+ +<]>+ +++.< +++++ +[->- —– <]>– —– –.<+ +[- >—-
<]>– —– .<+ [-> +<]>+ +++++ .<+ +[->- —<] >-.<+ +++++ [->++
< ]>+ +++.< +++++ [->– —<] >—- -.+ .<+++ [->– -<]>- —– .<

key2

Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook?
Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook!
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook.
Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook?
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook.
Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook!
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook?
Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook. Ook?
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook.
Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook!
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook!
Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook.

Brainfuck 和 Ook!加密

https://www.splitbrain.org/services/ook

flag{N7F5_AD5_i5_funny!}

九连环

附件给了一张图片,拖进010发现存在压缩包

分离出来

压缩包里又图片和flag.txt

这个图片不知道怎么处理,看了眼WP是用Steghide

Steghide:可以将文件隐藏到图片或音频中的工具

1
2
3
4
5
6
steghide embed -cf [图片文件载体] -ef [待隐藏文件]
steghide embed -cf 1.jpg -ef 1.txt
查看图片中嵌入的文件信息
steghide info 1.jpg
提取图片中隐藏的文件
steghide extract -sf 1.jpg

我们看一下里面图片里隐藏的信息

存在一个txt

提取出来看一看

bV1g6t5wZDJif^J7

猜测是压缩包密码

flag{1RTo8w@&4nK@z*XL}

变异凯撒

加密密文:afZ_r9VYfScOeO_UL^RWUc
格式:flag{ }

变异凯撒的偏移量有变化

像这一题,a到f差5,从5开始每一位都加1

简单写个脚本

1
2
3
4
5
s = "afZ_r9VYfScOeO_UL^RWUc"
k = 5
for i in s:
print(chr(ord(i) + k),end="")
k += 1

flag{Caesar_variation}

RSA

题目:在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flga提交

这里需要用到gmpy2库

贴上相关博客

https://blog.csdn.net/weixin_43790779/article/details/108473984?ops_request_misc=%7B%22request%5Fid%22%3A%22165579436116780366570563%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=165579436116780366570563&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-108473984-null-null.142v19control,157v15new_3&utm_term=gmpy2%E7%94%A8%E6%B3%95&spm=1018.2226.3001.4187

1
2
3
4
5
6
import gmpy2
q = 4511491
p = 473398607161
e = 17
d = gmpy2.invert(e, (q-1)*(p-1))
print(d)

rsarsa

Math is cool! Use the RSA algorithm to decode the secret message, c, p, q, and e are parameters for the RSA algorithm.

p =  9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q =  11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e =  65537
c =  83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034

Use RSA to find the secret message

题目给的很明确,把gmpy2的语法看看差不多能写出来

1
2
3
4
5
6
7
8
import gmpy2
p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e = 65537
c = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
d = gmpy2.invert(e, (q-1)*(p-1))
flag = gmpy2.powmod(c, d, p*q)
print(flag)

Windows系统密码

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
ctf:1002:06af9108f2e1fecf144e2e8adef09efd:a7fcb22a88038f35a8f39d503e7f0062:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SUPPORT_388945a0:1001:aad3b435b51404eeaad3b435b51404ee:bef14eee40dffbc345eeb3f58e290d56:::

附件内都是32位的密文,找了一个md5解密网站

https://www.cmd5.com/

信息化时代的步伐

606046152623600817831216121621196386

https://dianma.bmcx.com/

电报密码

凯撒?替换?呵呵!

MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}

试了试枚举凯撒,但是没有结果

我试图从中找出规律,无奈太垃圾放弃了,看了一眼WP

爆破出替换的所有可能

https://quipqiup.com/

flag{substitutioncipherdecryptionisalwayseasyjustlikeapieceofcake}

传统知识+古典密码

题目:

小明某一天收到一封密信,信中写了几个不同的年份
辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳。
信的背面还写有“+甲子”,请解出这段密文。

key值:CTF{XXX}

01 甲子 11 甲戌 21 甲申 31 甲午 41 甲辰 51 甲寅
02 乙丑 12 乙亥 22 乙酉 32 乙未 42 乙巳 52 乙卯
03 丙寅 13 丙子 23 丙戌 33 丙申 43 丙午 53 丙辰
04 丁卯 14 丁丑 24 丁亥 34 丁酉 44 丁未 54 丁巳
05 戊辰 15 戊寅 25 戊子 35 戊戌 45 戊申 55 戊午
06 己巳 16 己卯 26 己丑 36 己亥 46 己酉 56 己未
07 庚午 17 庚辰 27 庚寅 37 庚子 47 庚戌 57 庚申
08 辛未 18 辛巳 28 辛卯 38 辛丑 48 辛亥 58 辛酉
09 壬申 19 壬午 29 壬辰 39 壬寅 49 壬子 59 壬戌
10 癸酉 20 癸未 30 癸巳 40 癸卯 50 癸丑 60 癸亥

最后+甲子意思为60年一周期

88 90 83 68 77 70 76 90

ASCII:XZSDMFLZ

还有“古典密码部分”

这部分比较离谱,唯一的思路就是凭感觉

最终用栅栏密码栏数为2,再用凯撒,偏移量为5得到flag

flag{SHUANGYU}

RSA1

题目:

p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229
q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469
dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929
dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041
c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852

题目是dp dq题型的,网上能找到很多固定的脚本

找了一些证明过程,还是看不懂

😔

贴一篇博客

https://blog.csdn.net/MikeCoke/article/details/105959599

1
2
3
4
5
6
7
8
import gmpy2
I = gmpy2.invert(q,p)
mp = pow(c,dp,p)
mq = pow(c,dq,q) #求幂取模运算

m = (((mp-mq)*I)%p)*q+mq #求明文公式

print(hex(m)) #转为十六进制

old-fashion

题目

Os drnuzearyuwn, y jtkjzoztzoes douwlr oj y ilzwex eq lsdexosa kn pwodw tsozj eq ufyoszlbz yrl rlufydlx pozw douwlrzlbz, ydderxosa ze y rlatfyr jnjzli; mjy gfbmw vla xy wbfnsy symmyew (mjy vrwm qrvvrf), hlbew rd symmyew, mebhsymw rd symmyew, vbomgeyw rd mjy lxrzy, lfk wr dremj. Mjy eyqybzye kyqbhjyew mjy myom xa hyedrevbfn lf bfzyewy wgxwmbmgmbrf. Wr mjy dsln bw f1_2jyf-k3_jg1-vb-vl_l

很奇怪,看起来有规律的

所以手下锁定了凯撒密码,但是没有用

还是那个爆破替换网站

https://quipqiup.com/

flag is {n1_2hen-d3_hu1-mi-ma_a}

RSA3

题目:

c1=22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361
n=22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801
e1=11187289
c2=18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397
e2=9647291

共模攻击是指生成秘钥的过程中使用了相同的模数n,此时用不同的秘钥e1,e2加密同一信息m,得到不同的密文c1,c2

推导过程还是麻中麻

贴上此类题型的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import gmpy2
import binascii

c1 = 22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361
n = 22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801
e1 = 11187289
c2 = 18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397
e2 = 9647291
# 扩展欧几里得算法
# return (r,x,y) 其中,r为a和b的最大公约数,xy满足ax + by = 1
r, s1, s2 = gmpy2.gcdext(e1, e2) # 计算s1,s2
m = (gmpy2.powmod(c1, s1, n) * gmpy2.powmod(c2, s2, n)) % n # 计算明文m
m = hex(m)[2:]
print("明文数据为:0x" + m)
flag = binascii.unhexlify(m)
print(flag)

RSA2

题目:

e = 65537

n=248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113

dp=905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657

c=140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import gmpy2
import binascii

e = 65537
n = 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp = 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657

c = 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751

tmp = e * dp -1
#根据联立条件有: e*dp = 1 + k(p-1),故求解p的式子为:(p-1) = (e*dp-1) / k
for k in range(1, e):#因为K上限只到e,故遍历求解
if tmp % k == 0:#验证(p-1)是否为整除结果
p = (tmp // k) + 1
if n % p == 0:#验证p能否被n整除
q = n // p
if gmpy2.is_prime(p) and gmpy2.is_prime(q):#验证求解的p, q是否为素数
# print(k)
print("N的分解结果为 : ")
print("%d = %d * %d" % (n, p, q))
break

d = gmpy2.invert(e,(p-1)*(q-1)) # 求逆元,de = 1 mod fai(n)
m = gmpy2.powmod(c,d,n)# 幂取模,求明文

m = hex(m)[2:]
print("密文数据为:0x" + m)
flag = binascii.unhexlify(m)
print(flag)

这两道RSA贴个博客

https://blog.csdn.net/xiao_han_a/article/details/118557541?ops_request_misc=%7B%22request%5Fid%22%3A%22165597374116782246467729%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=165597374116782246467729&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-118557541-null-null.142v21control,157v15new_3&utm_term=RSA3&spm=1018.2226.3001.4187

Unencode

题目

89FQA9WMD<V1A<V1S83DY.#<W3$Q,2TM]

解密网站

https://www.qqxiuzi.cn/bianma/uuencode.php

异性相吸

密文:ἇ̀Ј唒ဃ塔屋䩘卖剄䐃堂ن䝔嘅均ቄ䩝ᬔ

key:asadsasdasdasdasdasdasdasdasdasdqwesqf

异性相吸,0和1代表异性

首先将他们转化为二进制,然后异或

1
2
3
4
5
6
7
8
9
10
a = '0110000101110011011000010110010001110011011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011000010111001101100100011100010111011101100101011100110111000101100110'
b = '0000011100011111000000000000001100001000000001000001001001010101000000110001000001010100010110000100101101011100010110000100101001010110010100110100010001010010000000110100010000000010010110000100011000000110010101000100011100000101010101100100011101010111010001000001001001011101010010100001010000011011'
c = ''
for i in range(len(a)):
if (a[i] == b[i]):
c += '0' # 二者相等则异或为0
else:
c += '1' # 二者不等则异或为1

print(c)

最后转化为字符串

flag{ea1bc0988992276b7f95b54a7435e89e}

还原大师

题目:

我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母,为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全,E903???4DAB????08?????51?80??8A?,请猜出神秘字符串的原本模样,并且提交这个字串的32位MD5码作为答案。 注意:得到的 flag 请包上 flag{} 提交

思路是爆破

将字符串的?部分用26个字母替换,当md5的前几位是E903时,输出字符串

1
0110011001101100011000010110011101111011011001010110000100110001011000100110001100110000001110010011100000111000001110010011100100110010001100100011011100110110011000100011011101100110001110010011010101100010001101010011010001100001001101110011010000110011001101010110010100111000001110010110010101111101

最后转化为flag
flag{ea1bc0988992276b7f95b54a7435e89e}

RSAROOL

题目

RSA roll!roll!roll!
Only number and a-z
(don’t use editor
which MS provide)

{920139713,19}

704796792
752211152
274704164
18414022
368270835
483295235
263072905
459788476
483295235
459788476
663551792
475206804
459788476
428313374
475206804
459788476
425392137
704796792
458265677
341524652
483295235
534149509
425392137
428313374
425392137
341524652
458265677
263072905
483295235
828509797
341524652
425392137
475206804
428313374
483295235
475206804
459788476
306220148

{920139713,19}可知,e,n,找个网站分离一下p和q

18443*49891

第二部分明显是把密文C拆成数组了

试着写个脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import gmpy2

n = 920139713
p = 18443
q = 49891
e = 19
d = gmpy2.invert(e, (p - 1) * (q - 1))
#print(d)
result = []
flag = ''
with open("C:\\Users\\Hyang\\Desktop\\data.txt", "r") as f:
for c in f.readlines():
c = c.strip('/n') # 去除列表中的换行符
result.append(chr(pow(int(c), d, n)))
for j in result:
flag += j
print(flag)