开始学Crypto
主要有两个原因,第一还是受了最近两场比赛的影响,安恒月赛的时候真就提前ak
了re
之后看着掉排名,GKCTF
也是只上了单榜;第二就是最近做re
的时候,经常会做到最后遇到加密算法还是抓瞎,所以开始接触了密码学的东西,拿Crypto
练习练习
新手区
base64
密文
1 | Y3liZXJwZWFjZXtXZWxjb21lX3RvX25ld19Xb3JsZCF9 |
直接base64
解一下就出来了
1 | cyberpeace{Welcome_to_new_World!} |
Caeser
密文
1 | oknqdbqmoq{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz} |
凯撒密码,正好用到之前信安导论的大作业,Rust is the future!
1 | #![allow(dead_code)] |
得到flag
1 | cyberpeace{you_have_learned_caesar_encryption} |
Morse
题目是摩斯密码但是内容全是0和1,所以应该是0对应.
,1对应-
1 | CODE = {'A': '.-', 'B': '-...', 'C': '-.-.', |
得到flag
1 | morsecodeissointeresting |
混合编码
密文
1 | JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzk7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM2ODsmIzY5OyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjNTI7JiM3NjsmIzEyMjsmIzEwNzsmIzUzOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc3OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiMxMDc7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzg7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjODQ7JiM2OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzUwOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc4OyYjMTA1OyYjNTY7JiM1MzsmIzc4OyYjMTIxOyYjNTY7JiM1MzsmIzc5OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM5OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjNjk7JiMxMTk7JiM3NzsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjNjU7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM2OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjMTA3OyYjNTM7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM4NDsmIzEwNzsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzEyMDsmIzc2OyYjMTIyOyYjNjk7JiMxMjA7JiM3ODsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjMTAzOyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjMTE5Ow== |
base64
解一下
1 | LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw |
Unicode
码,新建一个html
写进去,浏览器打开得到
1 | LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw |
接着base64
1 | /119/101/108/99/111/109/101/116/111/97/116/116/97/99/107/97/110/100/100/101/102/101/110/99/101/119/111/114/108/100 |
应该是ASCII码,写脚本跑一波
1 | import base64 |
得到flag
1 | welcometoattackanddefenceworld |
幂数加密
拿到密文
1 | 8842101220480224404014224202480122 |
一串数字,题目提示8个字,看到7个0,猜测0是分隔符,了解以下幂数加密,把每一位加起来得到索引
1 | WELLDOWN |
Railfence
题目提示栅栏密码,key是5,但是解出来发现不对,报读之后才知道还有一种w模式的栅栏密码,网上找了段代码
1 | def enc(plain, num): |
得到flag
1 | cyberpeace{railfence_cipher_gogogo} |
easy_RSA
题目描述非常直接
1 | 在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17 |
甚至不用求解rsa
,找到d就可以了
1 | def gcdext(a, b): |
不仅仅是Morse
拿到一段摩斯密码,解一下
1 | CODE = { |
这一段ab组成的密文是培根密码,写脚本解一下培根密码
1 | import re |
easychallenge
re
和crypto
一家石锤
pyc
没做任何修改,直接uncompyle6
反编译,得到结果改一下算法逆向计算一下得到结果
1 | import base64 |
Normal_RSA
这题算是进入了基本的crypto
领域了
首先作为一个脚本小子,直接拿别人的工具就可以跑出结果
CTF-RSA-tool很不错,虽然里面大部分的解法目前我还都不会
正常解法
首先用openssl
解析一下公钥
1 | -> openssl rsa -pubin -text -modulus -in pubkey.pem |
得到了n=0xC2636AE5C3D8E43FFB97AB09028F1AAC6C0BF6CD3D70EBCA281BFFE97FBE30DD
,e=65537
,这个n不是很大,所以yafu
直接分解,很快得到p
和q
1 | P39 = 319576316814478949870590164193048041239 |
然后正常rsa
的套路跑一边很快就可以得到结果
1 | import gmpy2 |
Comments