实验吧-密码学解题思路及答案(一)
1、JS
解题链接: http://ctf5.shiyanbar.com/crypto/2.html
eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('<1 8="7/a">9(\'\\6\\3\\2\\5\\4\\b\\i\\h\\k\\j\\0\\g\\d\\c\\f\\0\\e\')',21,21,'u0065|script|u006d|u0069|u0054|u0043|u0053|text|type|alert|javascript|u0046|u006f|u0063|u007d|u0064|u006e|u006a|u007b|u005f|u0073'.split('|'),0,{}))
修改后:
console.log(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('<1 8="7/a">9(\'\\6\\3\\2\\5\\4\\b\\i\\h\\k\\j\\0\\g\\d\\c\\f\\0\\e\')',21,21,'u0065|script|u006d|u0069|u0054|u0043|u0053|text|type|alert|javascript|u0046|u006f|u0063|u007d|u0064|u006e|u006a|u007b|u005f|u0073'.split('|'),0,{}))
复制修改后的源码到chrome到conlose中,将代码中的eval该成console.log,按回车显示。如下截图:
打印后显示的:
<script type="text/javascript">alert('\u0053\u0069\u006d\u0043\u0054\u0046\u007b\u006a\u0073\u005f\u0065\u006e\u0063\u006f\u0064\u0065\u007d')
显示为unicode编码,在网站在线解码即可。
Unicode在线解码网站:http://tool.chinaz.com/tools/unicode.aspx
答案:SimCTF{js_encode}
2、NSCTF crypto200(隐写术)
小绿在黑进一台服务器后,在root文件夹下找到了一张图片,据说图片中有root的密码,您能帮他找到吗?
解题链接: http://ctf5.shiyanbar.com/crypto/newnewnew.jpg
点进链接时如下的图图片:
安装:stegsolve.jar(.jar文件下载后,选择java方式打开即可)
通过变换后得到一张很像二维码的图片,保存这张图片,使用光影魔术手(具有反色功能的软件)然后得到如下的二维码,用微信扫描后即可得到flag.
答案:flag{NSCTF_Qr_C0De}
3、NSCTF crypto50
答题链接:
神秘的字符串:U2FsdGVkX1+qtU8KEGmMJwGgKcPUK3XBTdM+KhNRLHSCQL2nSXaW8++yBUkSylRp
解题思路:
观察密文应该是AES加密,使用AES在线解密工具进行解密。
在线解密平台:
http://tool.oschina.net/encrypt
解密之后得到明文:
flag{DISJV_Hej_UdShofjyed}
提交这个答案报错。
猜想可能是凯撒移位,CTF平台的规律,前五个字母应该是NSCTF故而找出移位数为10,参照26位字母表,明码表ABCDEFGHIJKLMNOPQRSTUVWXYZ找出对应的密文。
进过凯撒解密后的flag为NSCTF_Rot_EnCryption
答案:flag{NSCTF_Rot_EnCryption}
4、黑客叔叔(雨袭团)内部交流题(第一季1.0.2)
题目链接: http://ctf5.shiyanbar.com/crypto/1.html
上次的1.0.1大家貌似玩的很爽,有人都加好友来走后门了,如果你要研究密码学什么的,最好先去研究下编码,最简单的编码,你也不一定足够了解他,你看,上一题1.0.1大家就被自己坑了吧?密码学的题目会循序渐进的增加难度的,总共8~10题。然后换web?逆向? 大家持续关注吧! 那么1.0.2就如下咯:
U2FsdGVkX18vmjE0tvWk69T女B神u9inuiNnM3rBhsu6tXzLhu+
iofwuHNHq3YtDKs8ZlYLvSZuUY+
mxLRKO7+
m254R5YTCW8yzzgD+
mGwWfGRgqmPKdD你xA等等
hint:女神你等等?
解题思路:一般编码中很少会出现汉字,将汉字改成/,等等换成==
在线解密平台:
http://tool.oschina.net/encrypt
修改后的密文:
U2FsdGVkX18vmjE0tvWk69T/B/u9inuiNnM3rBhsu6tXzLhu+
iofwuHNHq3YtDKs8ZlYLvSZuUY+
mxLRKO7+
m254R5YTCW8yzzgD+
mGwWfGRgqmPKdD/xA==
hint:///==?
解密后:只有TripleDes出现明文说明,解密正确
U2FsdGVkX19RFyuUWyBHLNo8ldVPSkFpTB/lG07bZIL1rSAa/L0jFRGdvPh//8W4uZHe
但是结果依然是加密的形式,继续解密。
只有Rabbit出现了明文说明,该加密方式就是它
RainRaid_Flag_Rabbit&TripleDes_Nice
答案:RainRaid_Flag_Rabbit&TripleDes_Nice
5、simple algorithm
The flag is encrypted by this code, can you decrypt it after finding the system?
解题链接: http://ctf5.shiyanbar.com/crypto/simple_algorithm.zip
点击后下载的文件:
题目给了一个py脚本和一个密文文件,阅读源码可知:py脚本将明文转换为密文,现在需要将密文文件中的密文解密得到明文。 很明显加密流程为将明文转换为16进制编码,在转化为10进制数,将每两位数字构成的数进行FAN函数运算,再拼接起来得到密文。
因此解密流程为:将0~99利用FAN函数求得加密值,建立加密值到原数的字典,在明文中查字典拼接得到10进制数,转化为16进制数,再求取字符串。
按照要求用python脚本跑即可。
题目中给的脚本:
#!/usr/bin/python
flag = '[censored]'
hflag = flag.encode('hex')
iflag = int(hflag[2:], 16)
def FAN(n, m):
i = 0
z = []
s = 0
while n > 0:
if n % 2 != 0:
z.append(2 - (n % 4))
else:
z.append(0)
n = (n - z[i])/2
i = i + 1
z = z[::-1]
l = len(z)
for i in range(0, l):
s += z[i] * m ** (l - 1 - i)
return s
i = 0
r = ''
while i < len(str(iflag)):
d = str(iflag)[i:i+2]
nf = FAN(int(d), 3)
r += str(nf)
i += 2
print r
解题脚本:
import simple_algorithm
s=open("enc.txt").read().strip()
#构造0~99对应的FAN()的值的字典
dct={}
for n in xrange(0,100):
#key为FAN()的结果,value为n(位数补足到2位)
dct[str((simple_algorithm.FAN(n,m=3)))]="%02d"%n
lst=[]
offset=0
while offset<len(s):
#先从4个字符匹配直至1个字符
for i in xrange(4,0,-1):
tmp=s[offset:offset+i]
if tmp in dct:
lst.append(dct[tmp])
offset+=i
break
flag="".join(lst)
#python中s[i:i+2]不一定取到2个字符,
#如s="pcat",s[3:4]和s[3:5],甚至s[3:100]都是"t"
#此题中最后得到"09",但也可能是"9",故做下面的判断
if len(hex(long(flag))[2:-1])%2!=0:
flag=flag[:-2]+flag[-1]
flag=hex(long(flag))[2:-1].decode('hex')
print flag
pass
答案:SIS{a9ab115c488a311896dac4e8bc20a6d7}
6、密文rot13
57R9S980RNOS49973S757PQO9S80Q36P (md5不解密)
解题思路:直接root13解密就行了。
Root13在线解密工具
http://www.mxcz.net/tools/rot13.aspx
答案:57E9F980EABF49973F757CDB9F80D36C
7、Keyboard
解题链接: http://ctf5.shiyanbar.com/360/keyboard.html
提示和键盘有关,打开链接后出现如下:
BHUK,LP TGBNHGYT BHUK,LP UYGBN TGBNHGYT BHUK,LP BHUK,LP TGBNHGYT BHUK,LP TGBNHGYT UYGBN
根据提示,在键盘上排列出英文字母:
BHUK,LP对应N,TGBNHGYT对应B,UYGBN对应C。
答案:NBNCBNNBNBC
8、凯撒是罗马共和国杰出的军事统帅
解题链接: http://ctf5.shiyanbar.com/crypto/1/kai.html
点开链接后:
MGAKUZKRWZWGAWCP
解码代码:(python2.7)
#实现97-122小写ASCII字母(默认)
def change(c,i):
c=c.lower()
num=ord(c)
if(num>=97 and num<=122):
num=97+(num+i-97)%(26)
return chr(num)
def kaisa_jiAmi(string,i):
string_new=''
for s in string:
string_new+=change(s,i)
print(string_new)
return string_new
#本题有种暴力解密感觉
def kaisa_jiEmi(string):
for i in range(0,26):
print('第'+str(i+1)+'种可能:')
#区别在于 string 是该对象原本就是字符串类型, 而 str()则是将该对象转换成字符串类型。
kaisa_jiAmi(string,i)
#你要知道input输入的数据类型都是string
def main():
print('请输入操作,注意默认小写,大写同理:')
choice=raw_input('1:恺撒加密,2:凯撒穷举解密.请输入1或2:')
if choice=='1':
string=raw_input('请输入需要加密字符串: ')
num=int(raw_input('请输入需要加密的KEY: '))
kaisa_jiAmi(string,num)
elif choice=='2':
string=raw_input('请输入需要解密字符串: ') #python2.7输入用这种形式
kaisa_jiEmi(string)
else:
print('输入错误,请重试')
main()
if __name__=='__main__':
main()
运行之后有26种可能性:
观察第25种最像结果
答案:xipuxueyuan
9、摩擦摩擦
http://ctf5.shiyanbar.com/crypto/1/beiai.html
密文:
.-- . .-.. -.-. --- -- . - --- -..- .. .--. ..- -..- ..- . -.-- ..- .- -.
在线摩斯密码解题:
http://www.jb51.net/tools/morse.htm
答案:welcometoxipuxueyuan
10、最近听说刘翔离婚了
kyssmlxeei{ipeu}
解题链接: http://ctf5.shiyanbar.com/crypto/1/lan.html
栅栏密码
在线解密:
http://www.qqxiuzi.cn/bianma/zhalanmima.php(栅栏密码在线解密工具)
密文:kyssmlxeei{ipeu}
明文:keyis{simplexue}
答案:{simplexue}(提交的格式)
转载于:https://www.cnblogs.com/duanwxue1128/p/7807763.html
实验吧-密码学解题思路及答案(一)相关推荐
- CTF学习-密码学解题思路
CTF学习-密码学解题思路 密码学持续更新 密码学概述 密码学的发展 第一个阶段是从古代到19世纪末-古典密码 (classical cryptography) 第二个阶段从20世纪初到1949年-近 ...
- 剑指offer第二版答案详细版(带详细解题思路)
1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...
- 素数c语言程序解题思路,C语言上机实验题目解题思路.doc
上机实验题目解题思路 目录 第十三次实验:指针之一2 2453:步骤:2 2454:步骤:2 3575:步骤:方法同24543 3576:步骤:3 3580:步骤:3 3582:步骤:3 第十二次实验 ...
- 蓝桥杯单片机十一届省赛_“第十届蓝桥杯青少组C++省赛”前三题解题思路及参考答案!...
关注 及时了解信息学竞赛相关资讯 第十一届蓝桥杯青少组C++省赛即将到来,待考的各位小同学有没有刷完去年的真题呢?以下是为大家复习准备的"第十届蓝桥杯青少组C++省赛"前三题解题思 ...
- PAT basic level 答案+解题思路+难点 (个人刷题记录)
PAT basic level 使用语言:C++ 仅记录一下自己刷题过程的心得体会 永远保持更新(期待更好的解法) 可能有些题没有(那就是我还没做出来,以后会更的!) 欢迎大家与我讨论交流√ 题目序列 ...
- 实验吧MD5之守株待兔解题思路
解题链接 http://ctf5.shiyanbar.com/misc/keys/keys.php 解题思路 首先我们多打开几次解题链接,发现系统密钥大约在一秒钟左右变一次,所以联想到时间戳. 解题过 ...
- 数学速算法_小学数学必考应用题解题思路及方法大汇总(附各年级练习题及答案)...
长按二维码关注 小学数学学习不一定要死盯着书本,学习不是照着书背记就能学好,学习是要灵活的运用.运用的越多,掌握的就越牢靠! 应用题,可以说是小学数学中的半壁江山.做不好应用题的孩子,不止是数学成绩很 ...
- UNCTF部分简单得不得了的题的答案的解题思路(个人理解比不上大佬)
UNCTF部分简单得不得了的题的答案的解题思路(个人理解) UNCTF2020 MISC-{baba_is_you} 这道题是正儿八经的签到题,类似去年的那道misc{海阔天空} 把文件用任何一个16 ...
- LeetCode JAVA语言全部解题思路+答案代码+多种解法+关键注释(持续更新...)
第一题: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组 ...
最新文章
- 深度神经网络在NLP的应用!
- mysql双向同步读写_mysql数据双向同步
- 安卓python安装库_如何快速在安卓上搭建python3环境
- oracle 实现HA,使用KeepAlived实现HAProxy高可用
- Office Word Excel PPT Addin 插件开发
- mfc 固定编辑框输入上限和下限_S7200smart的模拟量输入输出
- java做一个万年历和闹钟,c51实现万年历、温度与闹钟功能程序
- Eureka源码深度刨析-(5)EurekaServer处理服务发现
- 【IE插件】--如何制作?
- Mysql上周,上月,去年同期年周数
- 逸鹏说道:性格色彩读后感
- Python3网络爬虫(十四):跟股神巴菲特学习炒股之财务报表入库(MySQL)
- 服装企业信息化面临三大瓶颈
- MSDC 4.3 接口规范(12)
- i9 13900ks和13900k区别 i913900ks和i913900k对比
- [Windows]获取md5值最简单的工具
- 单独聊一聊CTWing软硬交互
- Vue项目中ico问题
- Charles ——抓包工具安装与(Charles与浏览器)配置(Python爬虫必备神器)
- 探花交友_第2章_环境搭建(新版)