实验吧-密码学解题思路及答案(一)

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}(提交的格式)

时间: 2024-10-28 17:30:34

实验吧-密码学解题思路及答案(一)的相关文章

实验吧MD5之守株待兔解题思路

解题链接 http://ctf5.shiyanbar.com/misc/keys/keys.php 解题思路 首先我们多打开几次解题链接,发现系统密钥大约在一秒钟左右变一次,所以联想到时间戳. 解题过程 编写python脚本,然后执行得出答案 python脚本代码 import time import requests def getTime(): return str(int(time.time()))#获取当前的时间戳 def getFlag(time1): url='http://ctf5

[LeetCode] 3Sum 解题思路

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c) The solut

MYSQL-----使用select查询,解题思路总结---精髓!

select查询语句,作为测试人员,使用此语句是家常便饭,是必须掌握的部分,由开始学习mysql到网上搜索试题做,开始做题一塌糊涂,拿到题目就晕,无从下手,现在慢慢总结了一套自己做题的方式,很开森,嘿嘿!由简单试题到较难试题的解答,思路其实都是一样的,今天将做题思路进行总结,(说明:用到的关键字等自行学习,只讲解题思路)详见如下: 我们在查询时会用到的表,有4张表格如下: 1.查询出'计算机系'教师所教课程的成绩表 解题思路: 1.1)首先根据题目要求,找到相关连表,此处涉及到的表为:教师表.课

leetCode 42.Trapping Rain Water(凹槽的雨水) 解题思路和方法

Trapping Rain Water Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining. For example, Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6. The above elevation map

&quot;巴卡斯杯&quot; 中国大学生程序设计竞赛 - 女生专场(重现)解题思路

此文章可以使用目录功能哟↑(点击上方[+]) 经过这么一次女生赛,告诉我们千万不要小瞧女生,不然会死得很惨,orz... 链接→"巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场(重现)  Problem 1001 Solving Order Accept: 0    Submit: 0 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit : 32768/32768 K (Java/Others)  Problem Descri

SecurityOverride Decryption 部分解题思路

Level 1 : ROT13 ROT13加密,一种简单加密方式,详见百度百科,这里用python shell直接解密 1 'grfg110, jung vf Frgrp Nfgebabzl'.decode('rot13') 可得答案:'test110, what is Setec Astronomy' Level 2 :  BASE64 base64 加密,详情百度,同上直接python shell解密 'VG9vIG1hbnkgc2VjcmV0cyB0ZXN0MTEw'.decode('ba

实验吧-密码学(三)

21.我喜欢培根 key: CTF{} 解题链接: http://ctf5.shiyanbar.com/crypto/enc1.txt 打开链接后: -- --- .-. ... . ..--.- .. ... ..--.- -.-. --- --- .-.. ..--.- -... ..- - ..--.- -... .- -.-. --- -. ..--.- .. ... ..--.- -.-. --- --- .-.. . .-. ..--.- -.. -.-. -.-. -.. -.-.

js关于“变量提升、作用域、私有作用域等知识点”高级解题思路

var i = 2,    x = 5;var fn = function (x) {    x += 3;    return function (y) {        console.log((x++) + y + (--i));    }};var f = fn(1);f(2);fn(3)(4);f(5); 答案:f(2) => 7;     fn(3)(4) => 10;    f(5) =>9; 解题思路: 1. var f = fn(1);相当于开了一个堆内存(私有作用域)

Z1. 广度优先搜索(BFS)解题思路

/** BFS 解题思路 特点:从某些特定的节点开始,感染相邻的节点; 被感染的节点,再感染其相邻的节点,以此类推. 题目常见于数据结构包括 二维数组.树.图 **/ /** 1). 二维数组特定节点感染相邻的节点,即上下左右四个方向,可设定变化数组如下 int[] dr = new int[]{-1, 0, 1, 0}; int[] dc = new int[]{0, -1, 0, 1}; 2). 二维数组特定节点感染包围它的节点,即八个方法, 可设定变化数组如下: int[] dr = ne