bugku加密wp

字数 1662阅读 2434

滴答~滴

-... -.- -.-. - ..-. -- .. ... -.-.

直接摩斯电码解密
在线解密地址:http://www.mathsking.net/morse.htm

聪明的小羊

一只小羊翻过了2个栅栏

KYsd3js2E{a2jda}

根据提示应该是栅栏密码,并且有两栏。
KYsd3js2
E{a2jda}

ok

image

这是一种加密 ok加密,解密即可,同时bugku有在线的tools
在线地址:http://tool.bugku.com/brainfuck/

这不是摩斯密码

打开看到密文


image

一看就是brainfuck加密,工具或在线解密得到flag
在线地址:http://tool.bugku.com/brainfuck/

简单的加密

密文:e6Z9i]8RUQHE{RnY{QXgQnQ{XVlRXlpXI5Q6Q6SKY8jUAA

刚开始看到没有什么思路,百度下发现是凯撒密码,

凯撒有两种编码脚本,一种是字母26内循环移位,一种是127次非字母内的循环移位;

这次加密的源码一看就含有非字幕项,将其放在127次移位的脚本中,爆出来一个base64a2V5ezY4NzQzMDAwNjUwMTczMjMwZTRhNThlZTE1M2M2OGU4fQ==

解密得到key{68743000650173230e4a58ee153c68e8}

一段base64

密文一大长串base64 直接工具解密

image
image
image
image
image
image

flag%7Bctf_tfc201717qwe%7D

得到的unicode在线解密得到flag
flag{ctf_tfc201717qwe}

网上找到一个脚本,先收藏理解
#coding:utf-8
#python 2.7
import urllib
import re

#1. 第一层base64
with open('base64.txt') as f:
    cipher1 = f.read()
plain1 = cipher1.decode('base64')
# print plain1, type(plain1)

#2. 第二层,根据plain1的形式(0-7的整数),推测为8进制加密
cipher2 = plain1
cipher2 = re.findall(r'\d+', cipher2)
# print cipher2
plain2 = ''
for i in cipher2:
    plain2 += chr(int(i, 8))
# print plain2

#3. 第三层,根据plain2的形式(\xdd),推测为16进制加密
cipher3 = plain2
cipher3 = re.findall(r'\d+', cipher3)
# print cipher3
plain3 = ''
for i in cipher3:
    plain3 += chr(int(i, 16))
# print plain3

#4. 第四层,根据plain3的形式(udd*),推测为unicode
cipher4 = plain3
cipher4 = re.findall(r'u[\d\w]+', cipher4)
# print cipher4
cipher4 = ''.join(cipher4).replace('u', '\u')
# print cipher4
plain4 = cipher4.decode('unicode-escape').encode('utf-8')#将unicode转中文,来自知乎
# print plain4    

#5. 第5层,根据plain4形式,将所有数字转ASCII即可
cipher5 = plain4
cipher5 = re.findall('\d+', cipher5)
# print cipher5
plain5 = ''
for i in cipher5:
    plain5 += chr(int(i))
# print plain5

#6. 第6层,百度plain5的编码格式(&#x)得到解码方法
cipher6 = plain5
# print cipher6
cipher6 = re.findall(r'\d+\w?', cipher6)
# print cipher6
plain6 = ''
for i in cipher6:
    plain6 += chr(int(i, 16))
# print plain6

#7. 第7层,百度plain6的编码格式(&#)得到解码方法
cipher7 = plain6
cipher7 = re.findall('\d+', cipher7)
# print cipher7
flag = ''
for i in cipher7:
    flag += unichr(int(i))
# print flag
flag = urllib.unquote(flag)
print flag

.!?

image

利用同ok解密一个工具在线解密得到flag。

8、+[]-

利用同ok解密一个工具在线解密得到flag。
解密得到flag

奇怪的密码

突然天上一道雷电
gndk€rlqhmtkwwp}z
尝试下ascll移位
gndk€rlqhmtkwwp}z这个格式像不像flag{*******}?
比较一下"gndk"与"flag"的ASCII码
gndk的10进制的ASCII码分别是:103 110 100 107
flag的10进制的ASCII码分别是 :102 108 97 103
发现ASCII以此减少 1 2 3 4,所以以此类推
直接上代码

def pj(num):
    str2='gndk€rlqhmtkwwp}z'
    flag=''
    for i in str2:
        try:
            num+=1
            number=ord(i)-num
            key=chr(number)
            flag=flag+key
        except:
            pass
    return flag
for i in range(200):
    flag=pj(i)
    print(flag)
    if flag[:4]=='flag':
        print('success!flag is--------',flag)
        exit(0)

flag{lei_ci_jiami}
当然python最简单,但是不知道怎么处理'€'这个字符,暂时换成别的字符,最后在换成'{'

托马斯.杰斐逊

1: <ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: <KPBELNACZDTRXMJQOYHGVSFUWI <
3: <BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: <RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: <IHFRLABEUOTSGJVDKCPMNZQWXY <
6: <AMKGHIWPNYCJBFZDRUSLOQXVET <
7: <GWTHSPYBXIZULVKMRAFDCEONJQ <
8: <NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: <QWATDSRFHENYVUBMCOIKZGJXPL <
10: <WABMCXPLTDSRJQZGOIKFHENYVU <
11: <XPLTDAOIKFZGHENYSRUBMCQWVJ <
12: <TDSWAYXPLVUBOIKZGJRFHENMCQ <
13: <BMCSRFHLTDENQWAOXPYVUIKZGJ <
14: <XPHKZGJTDSENYVUBMLAOIRFCQW <

密钥: 2,5,1,3,6,4,9,7,8,14,10,13,11,12

密文:HCBTSXWCRQGLES

flag格式 flag{你解密的内容}

二、这个转盘加密,比如第一个密钥匙:2、密文匙:H

把转盘第二行单独提出来 2: <KPBELNACZDTRXMJQOYHGVSFUWI <

从H的地方一直剪切,把剪切的内容放在最前面,变成 2: <HGVSFUWIKPBELNACZDTRXMJQOY <

依次类推把14行都按这样的方式整一遍就得到这个:

2: <HGVSFUWIKPBELNACZDTRXMJQOY <
5: <CPMNZQWXYIHFRLABEUOTSGJVDK <
1: <BVIQHKYPNTCRMOSFEZWAXJGDLU <
3: <TEQGYXPLOCKBDMAIZVRNSJUWFH <
6: <SLOQXVETAMKGHIWPNYCJBFZDRU <
4: <XQYIZMJWAORPLNDVHGFCUKTEBS <
9: <WATDSRFHENYVUBMCOIKZGJXPLQ <
7: <CEONJQGWTHSPYBXIZULVKMRAFD <
8: <RJLXKISEFAPMYGHBQNOZUTWDCV <
14: <QWXPHKZGJTDSENYVUBMLAOIRFC <
10: <GOIKFHENYVUWABMCXPLTDSRJQZ <
13: <LTDENQWAOXPYVUIKZGJBMCSRFH <
11: <ENYSRUBMCQWVJXPLTDAOIKFZGH <
12: <SWAYXPLVUBOIKZGJRFHENMCQTD <

我这是是格式问题不太好看出flag,在记事本中容易看出来一点,flag在倒数第六列。

flag{XSXSBUGKUADMIN}

发现不对,就换成小写

flag{xsxsbugkuadmin}

zip 伪加密

Winhex修改

  • ZIP文件是一种压缩文件,可进行加密,也可不加密。而伪加密是在未加密的ZIP文件基础上修改了它的压缩源文件目录区里的全局方式位标记的比特值,使得压缩软件打开它的时候识别为加密文件,提示输入密码, 而在这个时候,不管用什么软件对其进行密码破解,都无法打开它,这就是它存在的意义。

    ZIP文件由三部分组成,分别是压缩源文件数据区、压缩源文件目录区和压缩源文件目录结束标志。这里使用010 Editor任意打开一个ZIP文件,如下所示:

image

在上图看到了三个不同的颜色,其中第一个颜色(灰色),即压缩文件数据区初始位置,只看前8个字节,解析如下:

第二个颜色(粉色),即压缩文件目录区初始位置,只看前10个字节,解析如下:

第三个颜色(黄色),即压缩文件目录区结束标志,只看前4个字节,解析如下:
如果是真正的加密文件,数据内容如下所示:


image

真正加密的ZIP文件数据中在压缩文件数据区初始位置和压缩文件目录区初始位置的全局方式位标记变为了09 00,表示加密,而伪加密只有压缩文件目录区初始位置的全局方式位标记变为了09 00。

此外在全局方式位标记的四个数值中,只有第二个数字对其有影响,其它的不管为什么值,都不影响其加密属性,并且第二个值不一定非的是9,只要第二个值是奇数就表示加密,是偶数就表示未加密。

其实你自己创建一个rar和题目的rar二进制一比较 就发现09不一样 直接改成偶数保存即可看到flag.txt

告诉你个密码

636A56355279427363446C4A49454A7154534230526D6843
56445A31614342354E326C4B4946467A5769426961453067

解密顺序:16进制转换 base64 键盘

首先用十六进制转ASCII,得到:

cjV5RyBscDlJIEJqTSB0RmhC
VDZ1aCB5N2lKIFFzWiBiaE0g

你如果问我为什么看出是十六进制,我百度了下:

十六进制数采用16个符号来表示015,其中09就用09来表示,形式相同,但1015却必须用1个符号而不是两个符号来表示,于是就用AF(小写af也行)来表示10~15了:10 -> A,11 -> B,12 -> C,13 -> D,14 -> E,15 -> F。
因此十六进制数的16个符号就是:0 1 2 3 4 5 6 7 8 9 A B C D E F,你看到的十六进制数中不仅包含数字09,而且包含字母AF

在线工具:http://www.ab126.com/goju/1711.html

Base64解码,得到:

r5yG lp9I BjM tFhB T6uh y7iJ QsZ bhM 

在线工具:http://tool.chinaz.com/tools/base64.aspx

然后你会发现,在键盘上r5yg中间的字母是t,同理,将其他的也找出来,得到

TONGYUAN

来自宇宙的信号

题目

一堆火星文,没有头绪 直接百度发现是银河语言,找到一张密码表


image

直接比较解出
flag{nopqrst}

推荐阅读更多精彩内容