题目:e00cf25ad42683b3df678c61f42c6bda
考点:MD5加密
下面的字符串解密后便能获得flag:ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30= 注意:得到的 flag 请包上 flag{} 提交
考点:base64解密
最后有个“=”符号,一看就是base64,解码就行。
解密网站:CTF在线工具-在线base编码
题目:%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d
考点:url编码
题目所给的是url编码,特点是%数字%数字,使用url解码
CTF在线工具-在线URL编码|URL解码 (hiencode.com)
题目:synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}
考点:莫斯代码
看到****{ } 的结构很容易想到是凯撒加密,应该是flag{ }。从s-f推一下,因此位移量也出来了13。
CTF在线工具-在线凯撒密码加密|在线凯撒密码解密|凯撒密码算法|Caesar Cipher (hiencode.com)
题目:… .-… — …- . -.-- — …-
莫斯代码的特点是点和横线搭配,直接进行莫斯代码解密CTF在线工具-在线莫尔斯电码编码|在线莫尔斯电码解码|莫尔斯电码算法|Morse (hiencode.com)
解出来是iloveyou,但是不对,加上flag{ }还是不对,
注意:摩斯电码只有大写,需要将它改成大写
题目:
姓名:张三
生日:19900315
key格式为key{xxxxxxxxxx}
生日八位,姓名两位,答案十位,很容易猜到是zs19900315
加密密文:afZ_r9VYfScOeO_UL^RWUc
格式:flag{ }
考点:凯撒加密变式
恺撒密码表是一种代换密码。通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。
flag{ }
,所以我们可以从flag
和afZ_
之间的对应关系找出规律 2. 可以看出其偏移量是对每个字符:从第一个字符的偏移量为5,第二个字符的偏移量为6……第n个字符的偏移量为4+n。偏移量依次递增。 下面我们写脚本进行解密,
public class Q123 {
public static void main(String[] args) {
String ciphertext = "afZ_r9VYfScOeO_UL^RWUc";
char[] plaintext = new char[ciphertext.length()];
for(int i = 0; i < ciphertext.length(); i++){ //注意i是从0开始的,所以是5+i
plaintext[i] = (char)(((int)ciphertext.charAt(i) + 5 + i) % 128);
}
for (char i: plaintext) {
System.out.print(i);
}
}
}
得到flag{Caesar_variation}
题目:=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6
考点:Quoted-printable加密
Quoted-printable加密,解出答案为flag{那你也很棒哦}
CTF在线工具-在线Quoted-printable编码
题目:U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI
考点:rabbit加密
Rabbit加密是什么 Rabbit 是一种高速流密码,于 2003 年在 FSE 研讨会上首次提出。 Rabbit 使用一个 128 位密钥和一个 64 位初始化向量。 该加密算法的核心组件是一个位流生成器,该流生成器每次迭代都会加密 128 个消息位。
在线Rabbit加密 | Rabbit解密- 在线工具 (sojson.com)
星星还是那颗星星哟 月亮还是那个月亮 山也还是那座山哟 梁也还是那道梁 碾子是碾子 缸是缸哟 爹是爹来娘是娘 麻油灯呵还吱吱响 点的还是那么丁点亮 哦哦 注意:得到的 flag 请包上 flag{} 提交
题目:felhaagv{ewtehtehfilnakgw}
考点:栅栏密码
简单来说,栅栏密码就是把一个明文(去掉空格)分成n组,每组m个,然后一定的排序方法来将这些字符重新组合。通过m的大小称其为m栏栅 栏密码,比较常见的m取2,即2栏栅栏密码。
这是栅栏密码,解密得到:flag{wethinkwehavetheflag}
栅栏密码解密
注意:得到的 flag 请 将 noxCTF 替换为 flag ,格式为 flag{} 提交。
题目:在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17 求解出d作为flga提交
考点:RSA加密
直接解出rsa就行,
RSA在线加密/在线解密
密码学历史中,有两位知名的杰出人物,Alice和Bob。他们的爱情经过置换和轮加密也难以混淆,即使是没有身份认证也可以知根知底。就像在数学王国中的素数一样,孤傲又热情。下面是一个大整数:98554799767,请分解为两个素数,分解后,小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希,提交答案。 注意:得到的 flag 请包上 flag{} 提交
考点:大数分解
1.素数分解
在线素数分解
98554799767分解为 101999 · 966233
2. 小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希
MD5
d450209323a847c8d01c6be47c81811a
得到flag{d450209323a847c8d01c6be47c81811a}
考点:md5
import hashlib
for i in range(32,127):
for j in range(32,127):
for k in range(32,127):
m=hashlib.md5()
m.update(('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM').encode("utf8"))
des=m.hexdigest()
if 'e9032' in des and 'da' in des and '911513' in des:
print(des);
题目给了程序我们只要修改运行即可,自己运行一下试试。
得到e9032994dabac08080091151380478a2
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
已知n和e,拿到flag需要求出d再计算
这里想知道RSA更详细的解析和攻略的,移步BUUCTF RSA(一)
结果:47bf28da384590448e0b0d23909a25a4
公元前一百年,在罗马出生了一位对世界影响巨大的人物,他生前是罗马三巨头之一。他率先使用了一种简单的加密函,因此这种加密方法以他的名字命名。
以下密文被解开后可以获得一个有意义的单词:FRPHEVGL
你可以用这个相同的加密向量加密附件中的密文,作为答案进行提交。
密文ComeChina
考点:凯撒加密
使用凯撒在线解密工具对它进行依次的移位即可,既可以一个一个试,也可以自己写一个python脚本去实现。
str1 = 'FRPHEVGL'
str2 = str1.lower() #转换为小写方便识别
num = 1 #偏移量
for i in range(26):
print("{:<2d}".format(num),end = ' ')
for temp in str2:
if(ord(temp)+num > ord('z')): #如果超出'z',需要重新映射会a~z这26个字母上
print(chr(ord(temp)+num-26),end = '')
else:
print(chr(ord(temp)+num),end = '')
num += 1
print('')
由此我们知道偏移量为13,那么现在就对我们的密文ComeChina进行13位的凯撒解密就行了。
flag{PbzrPuvan}
也许中国可以早早进入信息化时代,但是被清政府拒绝了。附件中是数十年后一位伟人说的话的密文。请翻译出明文(答案为一串中文!) 注意:得到的 flag 请包上 flag{} 提交
606046152623600817831216121621196386
考点:电报加密
题目内容的密文竟然只由数字组成,经过查询是中文电码。中文电码表采用四位阿拉伯数字作代号,从0001到9999按四位数顺序排列,用四位数字表示最多一万个汉字、字母和符号。汉字先按部首,后按笔划排列。字母和符号放到电码表的最尾。后来因一万个汉字不能应付户籍管理的要求,又有第二字面汉字的出现。在香港,两个字面都采用同一编码,由输入员人手选择字面;在台湾,第二字面的汉字在开首补上“1”字,变成5个数字的编码。 然后我们可以查一下中文电码在线解密工具然后对这一串中文电码进行解密就OK了。
flag{计算机要从娃娃抓起}
题目:MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}
考点:凯撒加密+替换密码组合
我们首先使用凯撒加密,前四个字母得到的是FMAC而非想要的FLAG,FMAC四个字母之间也无规律可循,故尝试题目中提到的替换
quipqiup - cryptoquip and cryptogram solver在线解密网站,quipqiup是Edwin Olson的快速和自动化的密码求解器。它可以解决报纸上常见的简单替换密码
这题就是凯撒+简单替换
萌萌哒的八戒原来曾经是猪村的村长,从远古时期,猪村就有一种神秘的代码。请从附件中找出代码,看看萌萌哒的猪八戒到底想说啥 注意:得到的 flag 请包上 flag{} 提交
考点:猪圈密码
图片下面有这样一串符号
经过查询,这是典型的猪圈密码,我们对应解出就好CTF在线工具-在线猪圈密码加密|在线猪圈密码解密|猪圈密码算法|Pigpen Cipher (hiencode.com)
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.壬辰 30.癸巳
31.甲午 32.乙未 33.丙申 34.丁酉 35.戊戌 36.己亥 37.庚子 38.辛丑 39.壬寅 40.癸卯
41.甲辰 42.乙巳 43.丙午 44.丁未 45.戊申 46.己酉 47.庚戌 48.辛亥 49.壬子 50.癸丑
51.甲寅 52.乙卯 53.丙辰 54.丁巳 55.戊午 56.己未 57.庚申 58.辛酉 59.壬戌 60.癸亥
写出题中所给组合的数字编码
28 30 23 8 17 10 16 30
加上一个甲子(60)
88 90 93 68 77 70 76 90
转换成ASCII字母:XZSDMFLZ
然后题目讲了除了传统知识外,还有一种古典加密方式。那这种没有其他密钥的古典加密,很容易想到栅栏和凯撒。但栅栏只是顺序改变,里面的字母不会变。这里面的字母这么拼都感觉不像一个单词,所以用凯撒解密,最后找到一个比较像单词的答案SUNYHAGU。
了解RSA有关的题解参考:BUUCTF RSA(一)路由()生的博客-CSDN博客_buuctf rsa
涉及到RSA算法
p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229 q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469 dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929 dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041 c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852
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)) #转为十六进制
print(bytes.fromhex(hex(m)[2:])) #16进制转文本
得到答案
0x6e6f784354467b57333163306d335f37305f4368316e343730776e7d b’noxCTF{W31c0m3_70_Ch1n470wn}’
你猜这是什么东西,记得破解后把其中的密码给我。答案为非常规形式。 注意:得到的 flag 请包上 flag{} 提交
Administrator:500:806EDC27AA52E314AAD3B435B51404EE:F4AD50F57683D4260DFD48AA351A17A8:::
这个密码的形式一看就是MD5加密,我们只对F4AD50F57683D4260DFD48AA351A17A8进行解密
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
这题单词长度错落有致,考虑凯撒,栅栏,简单替换。
我们在quipqiup - cryptoquip and cryptogram solver上尝试得到flag is n1_2hen-d3_hu1-mi-ma_a
以下是某国现任总统外发的一段指令,经过一种奇异的加密方式,毫无规律,看来只能分析了。请将这段语句还原成通顺语句,并从中找到key作为答案提交,答案是32位,包含小写字母。 注意:得到的 flag 请包上 flag{} 提交
打开附件是一串字符
VIZZB IFIUOJBWO NVXAP OBC XZZ UKHVN IFIUOJBWO HB XVIXW XAW VXFI X QIXN VBD KQ IFIUOJBWO WBKAH NBWXO VBD XJBCN NKG QLKEIU DI XUI VIUI DKNV QNCWIANQ XN DXPIMKIZW VKHV QEVBBZ KA XUZKAHNBA FKUHKAKX XAW DI VXFI HBN QNCWIANQ NCAKAH KA MUBG XZZ XEUBQQ XGIUKEX MUBG PKAWIUHXUNIA NVUBCHV 12NV HUXWI XAW DI XUI SCQN QB HZXW NVXN XZZ EBCZW SBKA CQ NBWXO XAW DI DXAN NB NVXAP DXPIMKIZW MBU JIKAH QCEV XA BCNQNXAWKAH VBQN HKFI OBCUQIZFIQ X JKH UBCAW BM XLLZXCQI XAW NVI PIO KQ 640I11012805M211J0XJ24MM02X1IW09
单词错落有致,我们考虑简单替换
得到:THE KEY IS 640E11012805F211B0AB24FF02A1ED09,可知key为640E11012805F211B0AB24FF02A1ED09,又因为题目中提示为小写,转化大小写得到:640e11012805f211b0ab24ff02a1ed09
打开文件发现:
c1=22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361
n=22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801
e1=11187289
c2=18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397
e2=9647291
共模攻击 前提:有两组及以上的RSA加密过程,而且其中两次的m和n都是相同的,那么就可以在不计算出d而直接计算出m的值。
了解RSA有关的题解参考:BUUCTF RSA(一)路由()生的博客-CSDN博客_buuctf rsa
#共模攻击
import libnum
e1 = 11187289
c1=22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361
e2 = 9647291
c2=18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397
n=22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801
def ext_euclid(a, b):
if b == 0:
return 1, 0, a
else:
x, y, q = ext_euclid(b, a % b) # q = gcd(a, b) = gcd(b, a%b)
x, y = y, (x - (a // b) * y)
return x, y, q
r,s,q = ext_euclid(e1,e2)
m = (pow(c1,r,n)*pow(c2,s,n))%n
print(libnum.n2s(m))
得到答案flag{49d91077a1abcb14f1a9d546c80be9ef}
89FQA9WMD 这属于是Uuencode编码,我们直接转换 得到flag{dsdasdsa99877LLLKK} 我们直接代码破解 得到flag{wow_leaking_dp_breaks_rsa?_98924743502} -…/.----/-…/-…/-…/…–/–…/…-/-…/-…/–…/-…/…–/.----/–…/…–/…—/–…/–…/…-/…/…-./–…/…–/…–/-----/…/…-./…–/…–/…–/…-/…–/…/–…/----./–…/-… 该题首先想到莫斯代码,由于莫斯代码没有/ 因此我们将/替换成空格,得到 然后又是一个解密,我们注意到7d的ASCII码是’}’。 最近出现了一个奇葩观点,说性别都不一样,怎么能谈恋爱?为了证明这个观点错误,请大家证明异性是相吸的。 注意:得到的 flag 请包上 flag{} 提交 打开压缩包得到两个txt文件,用010editor打开。写个python脚本,进行二进制数异或即可。异或的过程可以用python脚本实现。 得到的结果是 打开010editor,新建一个Hex文件,粘贴为二进制数据。得到flag{ea1bc0988992276b7f95b54a7435e89e} 我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母,为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全,E903???4DAB???08???51?80??8A?,请猜出神秘字符串的原本模样,并且提交这个字串的32位MD5码作为答案。 注意:得到的 flag 请包上 flag{} 提交 这题主要是缺口的三为可以使用循环来验证 最后得到结果flag:E9032994DABAC08080091151380478A2 了解RSA有关的题解参考:BUUCTF RSA(一)路由()生的博客-CSDN博客_buuctf rsa 首先得到两个文件,将pub.key文件的内容进行公钥解析 得到e和n,对n进行分解因数求p,q,使用yafu工具或网站factordb 代码: 得到:flag{decrypt_256} 了解RSA有关的题解参考:BUUCTF RSA(一)路由()生的博客-CSDN博客_buuctf rsa
Uuencode编码(加密);Uuencode解码(解密)|文字加密和解密工具 (qqxiuzi.cn)RSA2
import libnum e = 65537 n=248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113 dp=905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657 c=140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751 pd = e*dp-1
def ext_euclid(a, b): if b == 0:
return 1, 0, a else:
x, y, q = ext_euclid(b, a % b)
x, y = y, (x - (a // b) * y)
return x, y, q
def mod_inv(a, b): return ext_euclid(a, b)[0] % b #函数返回的第一个数%b
for i in range(1,e): if pd%i == 0:
if n%(pd//i+1) == 0:
p = pd//i+1
q = n//p
fn = (p-1)*(q-1)
d = mod_inv(e,fn)
m = pow(c,d,n)
print(libnum.n2s(m))
[AFCTF2018]Morse
61666374667b317327745f73305f333435797d
于是得到*#afctf{1s’t_s0_345y}*异性相吸
还原大师
import hashlib import string
def md5(str): m = hashlib.md5() m.update(str.encode("utf8")) return m.hexdigest()
for i in string.ascii_uppercase: for j in string.ascii_uppercase:
for k in string.ascii_uppercase:
c = 'TASC' + i + 'O3RJMV' + j + 'WDJKX' + k + 'ZM'
x = md5(c).upper()
if 'E903' in x and '4DAB' in x and '08' in x and '51' in x and '80' in x and '8A' in x:
print(c)
print(x)
break
RSA
证书公钥解析
RSA公钥文件解密密文的原理分析
SSL在线工具-在线公钥解析-在线公钥提取-公钥在线破解-SSLeye官网import rsa
import gmpy2
c = 1854183526100811878807183372982532818560316522978821358738967769534081571682
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
e = 65537
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
fn = (p-1)*(q-1)
d = int(gmpy2.invert(e,fn))
key = rsa.PrivateKey(n,e,d,q,p)
with open(r'c:\111\flag.enc','rb') as f: #文件路径
f = f.read()
print(rsa.decrypt(f,key))
RSAROLL
mport libnum,gmpy2
e = 19
n = 920139713
p = 18443
q = 49891
d = int(gmpy2.invert(e,(p-1)*(q-1)))
f = open(r'c:\111\data.txt','rb')
next(f) #跳过文件中的第一行
next(f) #跳过文件中的第二行
for i in f: #行读取
m = pow(int(i),d,n)
print(libnum.n2s(m).decode(),end = '') #libnum解出的是bytes类型,转换成字符串类型用.decode('utf-8')