buuctf-Misc61-90题wp

六十一、[BJDCTF2020]纳尼

gif打不开

文件头错误

四张图,这个应该是base64解码即可

flag{wang_bao_qiang_is_sad}

六十二、[ACTF新生赛2020]outguess

文件夹东西很乱

里面这个txt说guess一下,结合题目outguess那就是guess算法隐写了,找图片

应该是这张了

试了试发现不行,应该需要密码

去找密码

图片备注里面有东西

这样就解出来了

flag{gue33_Gu3Ss!2020}

六十三、[GXYCTF2019]gakki

得到一张图片

有内容

得到一个rar

解压需要密码

要么伪加密,要么爆破

rar的伪加密比较不常见,那就爆破

解压出来很乱

看了wp知道像这种乱七八糟的文本,要用字频统计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- ={}[]"
f = open("flag.txt", "r")
data = f.read()
result = {d: 0 for d in alphabet}


def sort_by_value(d):
items = d.items()
backitems = [[v[1], v[0]] for v in items]
backitems.sort(reverse=True)
return [backitems[i][1] for i in range(0, len(backitems))]


for d in data:
for alpha in alphabet:
if d == alpha:
result[alpha] = result[alpha] + 1

print(sort_by_value(result))

[‘G’, ‘X’, ‘Y’, ‘{‘, ‘g’, ‘a’, ‘k’, ‘i’, ‘_’, ‘I’, ‘s’, ‘M’, ‘y’, ‘w’, ‘1’, ‘f’, ‘e’, ‘}’, ‘D’, ‘A’, ‘W’, ‘Q’, ‘O’, ‘J’, ‘H’, ‘U’, ‘S’, ‘N’, ‘K’, ‘E’, ‘P’, ‘Z’, ‘8’, ‘*’, ‘&’, ‘^’, ‘C’, ‘B’, ‘9’, ‘4’, ‘2’, ‘%’, ‘#’, ‘V’, ‘T’, ‘R’, ‘F’, ‘@’, ‘3’, ‘-‘, ‘)’, ‘(‘, ‘$’, ‘L’, ‘=’, ‘7’, ‘6’, ‘5’, ‘0’, ‘o’, ‘h’, ‘q’, ‘d’, ‘u’, ‘j’, ‘l’, ‘z’, ‘x’, ‘p’, ‘n’, ‘m’, ‘c’, ‘b’, ‘v’, ‘t’, ‘r’, ‘!’, ‘[‘, ‘ ‘, ‘]’, ‘+’]

跑一下就可以得到flag了

六十四、[SWPU2019]伟大的侦探

解压需要密码但是这个txt文件不用,没输密码自己出来了

这个编码用notepad++找不到这个编码,查了一下需要用01editor

选EBCDIC(B)

得到解压密码

福尔摩斯里面的跳舞的小人加密

iloveholmesandwllm

六十五、[HBNIS2018]excel破解

直接在winhex里面看到flag

这应该不是常规解法

常规解法暂时找不到

六十六、[RoarCTF2019]黄金6年

给了一个mp4视频

视频隐写

仔细看了一下,视频里面没有藏flag的帧

用winhex打开

最后看到base64

这应该是一个rar,只能用python把它输出了

这样不方便,还是写一个脚本吧

1
2
3
4
5
6
import base64
code="UmFyIRoHAQAzkrXlCgEFBgAFAQGAgADh7ek5VQIDPLAABKEAIEvsUpGAAwAIZmxhZy50eHQwAQADDx43HyOdLMGWfCE9WEsBZprAJQoBSVlWkJNS9TP5du2kyJ275JzsNo29BnSZCgMC3h+UFV9p1QEfJkBPPR6MrYwXmsMCMz67DN/k5u1NYw9ga53a83/B/t2G9FkG/IITuR+9gIvr/LEdd1ZRAwUEAA=="
r=base64.b64decode(code)
test_file=open("test.rar","wb")
test_file.write(r)
test_file.close()

得到一个需要密码的压缩包

爆破不出来,尝试再看看视频

用会声会影仔细看发现二维码

应该不止一张二维码


password:iwantplayctf

六十七、[SWPU2019]你有没有好好看网课?

都要密码

flag3可以看到

flag2里面是真正的flag

那就通过flag3找flag2的密码

爆破一下

doc这样的,然后一个视频,不知道怎么做了

看了wp才知道doc提供了两个时间节点5:20和7:11

不知道为什么我这里时间有点偏差,然后就是非常不明显的字符在灯上,这个逐帧播放是用这个potplayer软件按d和f前进后退的

下面这个是base64,上面的好像是摩斯密码

….. ../… ./… ./… ../

dXBfdXBfdXA=

这个第一个不太像摩斯,好像是敲击码

21是F

….. ../… ./… ./… ../

52 31 31 32

wllm

连起来就是wllmup_up_up解压密码

又一张图片

winhex看到flag

六十八、[安洵杯 2019]吹着贝斯扫二维码

这题应该也写过

随便打开一个

jpg文件头

改后缀

新建一个txt然后输入这些,后缀改成.bat批处理

把这个拼出来

base全家桶

这里就是要解密的码

从后往前,先32再16,然后这个13其实是rot13

然后就慢慢解了

六十九、[GXYCTF2019]SXMgdGhpcyBiYXNlPw==

一堆的base64,要用python批量了

Cette nuit,

Intenable insomnie,

La folie me guette,

Je suis ce que je fuis

Je subis,

Cette cacophonie,

Qui me scie la t锚te,

Assommante harmonie,

还有好多,反正都不重要,这好像是杀人狂想曲的歌词

wp说这里考的是base64隐写

https://www.tr0y.wang/2017/06/14/Base64steg/index.html

1
2
3
4
5
6
7
8
9
10
11
12
# -*- coding: cp936 -*-
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('flag.txt', 'rb') as f:
bin_str = ''
for line in f.readlines():
stegb64 = ''.join(line.split())
rowb64 = ''.join(stegb64.decode('base64').encode('base64').split())
offset = abs(b64chars.index(stegb64.replace('=','')[-1])-b64chars.index(rowb64.replace('=','')[-1]))
equalnum = stegb64.count('=') #no equalnum no offset
if equalnum:
bin_str += bin(offset)[2:].zfill(equalnum * 2)
print ''.join([chr(int(bin_str[i:i + 8], 2)) for i in xrange(0, len(bin_str), 8)]) #8 位一组

用这个脚本

这是python2的脚本,ubuntu里面又python2环境

用python3太不兼容了

flag{fazhazhenhaoting}

摘抄一下别人的wp对base64的解释:

贴上官方解释,学习一波:

base64是将3个8比特转换成4个6比特,最小的转换单位是24比特(6和8最小公倍数)

因此如果原文内容不足三字节,有一部分比特解码时候不需要,但会组成编码后的某个字符。

比如上图A的 0100 0001 被 base64 识别为 0100 0001 0000 然而最后四个比特解密时无

用。换句话说 0100 0001 0000 和0100 0001 1111 对应的原文都是 A
,因此可以使用这四个比特进行隐写

如果官方题解没有看懂,简单说一下我自己的理解,base64隐写就是每一次base64编码之后不是都刚好占到了三个字节,当没有占到3个字节的时候,我们将base64编码最后的几个比特修改成我们想要隐藏的信息,同时并不影响base64的解码。

再贴一个base64隐写的加密程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*- coding: cp936 -*-
import base64
flag = 'Tr0y{Base64isF4n}' #flag
bin_str = ''.join([bin(ord(c)).replace('0b', '').zfill(8) for c in flag])
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('0.txt', 'rb') as f0, open('1.txt', 'wb') as f1: #'0.txt'是明文, '1.txt'用于存放隐写后的 base64
for line in f0.readlines():
rowstr = base64.b64encode(line.replace('\n', ''))
equalnum = rowstr.count('=')
if equalnum and len(bin_str):
offset = int('0b'+bin_str[:equalnum * 2], 2)
char = rowstr[len(rowstr) - equalnum - 1]
rowstr = rowstr.replace(char, base64chars[base64chars.index(char) + offset])
bin_str = bin_str[equalnum*2:]
f1.write(rowstr + '\n')

七十、[ACTF新生赛2020]base64隐写

上一题就是base64隐写,这题又是

七十一、[BJDCTF 2nd]Imagin - 开场曲

一个mp4文件

这是群里的hint

这里有个网站

发现这个像是一个flash

这些是可以手动点击不同方块的,好像是音符

然后那个视频就是出题人自己按了不同的方块,弹奏出了不同的音符

BJD{MIKUTAP3313313}

这就是flag了

好像是对照了这个表

七十二、[V&N2020 公开赛]拉胯的三条命令

还有一个流量包

看了wp,一条命令得到端口

1
tcpdump -n -r nmapll.pcapng 'tcp[13] = 18' \| awk '{print \$3}'\| sort -u

flag{21226318013306}

命令解释:

-n 不把 [网络地址转换]

(https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2)
成名字;

-r 从指定的文件中读取包(这些包一般通过-w选项产生);

awk ‘{print $3}’

取第三为字符串

sort -u 拒绝重复

七十三、[WUSTCTF2020]find_me

一张图片

备注里看到东西

这个作者也值得注意

⡇⡓⡄⡖⠂⠀⠂⠀⡋⡉⠔⠀⠔⡅⡯⡖⠔⠁⠔⡞⠔⡔⠔⡯⡽⠔⡕⠔⡕⠔⡕⠔⡕⠔⡕⡍=

应该是个盲文解密

https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=mangwen解密网站

七十四、[MRCTF2020]你能看懂音符吗

这题之前也应该写过

文件头损坏

word隐写隐藏了文字

这有个下划线,这个文字无法复制,需要在字体里把隐藏去掉

https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=yinyue

七十五、[HBNIS2018]来题中等的吧


给了一张图片怀疑是摩斯密码

套一个flag就好了

七十六、[HBNIS2018]caesar

一个txt文件,里面就这点内容

应该是一种古典密码,凯撒或栅栏啥的

flag{flagiscaesar}

七十七、[SUCTF 2019]Game

一个前端代码,但是打开index发现一直弹窗,疯狂敲回车能隐约看到有个魔方出现,那把这个弹窗先去掉

在html里面看到,这个,但是好像不是真的flag

把这个弹窗删了

拼一拼玩一下

白拼了,刚刚已经看到这个flag了

这个不是base64是base32

suctf{hAHaha_Fak3_F1ag}

然而这是假的flag

重新看图片

这里需要一个常识

根据U2FsdGVkX1我们知道是DES加密,因为DES加密之后开头都是这几位,不过解密需要秘钥。

不只是DES还有3DES加密,密文也是这样的

然后我们这样

这个密钥就是刚刚那个假的flag

suctf{U_F0und_1t}

因为buuctf直接给出了图片,实际上降低了难度,根据官方题解,我们需要在/js/three.min.js里可以找到图片:iZwz9i9xnerwj6o7h40eauZ.png

七十八、[MRCTF2020]ezmisc

这题也写过吧,直接修改图片高度就出来了

flag{1ts_vEryyyyyy_ez!}

七十九、[GUET-CTF2019]KO

https://tool.bugku.com/brainfuck/

八十、[DDCTF2018](╯°□°)╯︵ ┻━┻

长度为134的字符串,按每两位截取的十六进制

[‘d4’, ‘e8’, ‘e1’, ‘f4’, ‘a0’, ‘f7’, ‘e1’, ‘f3’, ‘a0’, ‘e6’, ‘e1’, ‘f3’, ‘f4’, ‘a1’, ‘a0’, ‘d4’, ‘e8’, ‘e5’, ‘a0’, ‘e6’, ‘ec’, ‘e1’, ‘e7’, ‘a0’, ‘e9’, ‘f3’, ‘ba’, ‘a0’, ‘c4’, ‘c4’, ‘c3’, ‘d4’, ‘c6’, ‘fb’, ‘b9’, ‘b2’, ‘b2’, ‘e1’, ‘e2’, ‘b9’, ‘b9’, ‘b7’, ‘b4’, ‘e1’, ‘b4’, ‘b7’, ‘e3’, ‘e4’, ‘b3’, ‘b2’, ‘b2’, ‘e3’, ‘e6’, ‘b4’, ‘b3’, ‘e2’, ‘b5’, ‘b0’, ‘b6’, ‘b1’, ‘b0’, ‘e6’, ‘e1’, ‘e5’, ‘e1’, ‘b5’, ‘fd’]

转换为10进制

[212, 232, 225, 244, 160, 247, 225, 243, 160, 230, 225, 243, 244, 161, 160, 212, 232, 229, 160, 230, 236, 225, 231, 160, 233, 243, 186, 160, 196, 196, 195, 212, 198, 251, 185, 178, 178, 225, 226, 185, 185, 183, 180, 225, 180, 183, 227, 228, 179, 178, 178, 227, 230, 180, 179, 226, 181, 176, 182, 177, 176, 230, 225, 229, 225, 181, 253]

可以发现都是大于128的数,把所有数-128得到ASCII码

[84, 104, 97, 116, 32, 119, 97, 115, 32, 102, 97, 115, 116, 33, 32, 84, 104, 101, 32, 102, 108, 97, 103, 32, 105, 115, 58, 32, 68, 68, 67, 84, 70, 123, 57, 50, 50, 97, 98, 57, 57, 55, 52, 97, 52, 55, 99, 100, 51, 50, 50, 99, 102, 52, 51, 98, 53, 48, 54, 49, 48, 102, 97, 101, 97, 53, 125]

ASCII码转换为字符

That was fast! The flag is: DDCTF{922ab9974a47cd322cf43b50610faea5}

也可以用移位密码获取flag

1
2
3
4
5
6
7
8
9
10
11
12
13
s = 'd4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd'
'''
s1=''
for x in range(len(s)/2):
s1+=chr((int(s[x*2:x*2+2],16))%128)
print s1
'''

for j in range(20):
s1 = ''
for x in range(len(s) / 2):
s1 += chr((int(s[x * 2:x * 2 + 2], 16) - j) % 128)
print s1

八十一、[HBNIS2018]低个头

栅栏和凯撒都不是

这个题目是低个头,低头看到键盘,想到键盘密码

就是CTF

flag{CTF}

八十二、[安洵杯 2019]Attack

流量包分析题

数据包有35MB,http导出对象也没有什么特别的东西,binwalk一下

一大堆东西

binwalk里面找到一个压缩包,flag应该就是在里面了,找到解压密码就好

然后再http对象导出这里看到这个

这个lsass.dmp文件有34MB

lsass是windows系统的一个进程,用于本地安全和登陆策略。

通过这个软件获取里面的系统administrator密码

https://github.com/gentilkiwi/mimikatz/

这个网址是源码,一定要到右边这里进去

这个下载下来

运行这个exe文件

别忘了把lsass.dmp放到这个mimikatz.exe的目录下

三条命令

privilege::debug

sekurlsa::minidump lsass.dmp

sekurlsa::logonpasswords full

最下面那个就是密码了

W3lc0meToD0g3

一直往下

八十三、百里挑一

好多漂亮的壁纸,赶快挑一张吧! 注意:得到的 flag 请包上 flag{} 提交

很多的jpg图片,http导出对象,并没有发现什么异常,百度了才知道需要用这个东西exiftool找flag

我在kali里面装

1
sudo apt-get install libimage-exiftool-perl

然后进入图片文件夹

1
exiftool \*\|grep flag

找到了一半的flag

flag{ae58d0408e26e8f

这个方法的原理是什么我还真不清楚

另一半在tcp114追踪流中,是个脑洞,不过之前好像遇到过

过滤器输入:tcp.stream eq 114

26a3c0589d23edeec}

八十四、[ACTF新生赛2020]NTFS数据流

题目已经说了NTFS隐写

里面有个flag.rar里面有几百个txt文件

这里遇到一个未知Bug就是我用Bindizip解压扫不出这个flag.txt而用7z解压才能扫出这个flag.txt

八十五、寂静之城

出题人非常喜欢开小说,据说最近出题人对这篇小说非常入迷:https://www.douban.com/group/topic/5221588/。你能通过这点线索发现什么?hacking
to the gate! 注意:得到的 flag 请包上 flag{} 提交

这是一道社工题,由于大部分的内容都被删除了包括网易被脱裤的密码数据库,所以这里直接上当年的WP

第一处是他的签名:weiluchuan12341127@163.com;第二处是他的简介那块(不知道叫什么):听说163被拖库了,吓得我立马改了密码,但原密码是我的密钥啊怎么办;第三处就是他的日记:evL5S5J+a5HzxAKR8xXiUXPUd1LDKPYYNHSjN6ZF8i0=
。暂时不知道干啥的,先留着。

第二处那个信息明显是一个提示,要查163邮箱的裤子,跟朋友要了个地址,扔了进去,63542021127。

然后看他简介那块,这个密码只是一个密钥,并不是期待的flag,白鸡冻了,继续搞,然后看第三处,那段密文,看着像AES算法加密的,就在队伍里说了下,我光把密钥填进去半天解不开,还是机智的喵总,加上了偏移,解出来是://weibo.com/u/3192503722

炸了,有完没完!访问这个地址,发现是他们安全研究员董进的微博,发现只有一条微博,附了个路飞的图。

刚开始以为这个是图片隐写就结束了,然后右击另存为,拿Stegsolve搞了半天发现然并卵,然后发现他相册还有图,又拿去看隐写,这块钻隐写牛角尖了,不行还把他点过赞的都挨个看了遍,然后一直卡在这里,无聊的时候还试着给博主私信“羊踹玉兔”,然而一切并没有什么卵用。。。

就在束手无策的时候,队长大大发威了,分分钟搞定,原来就在我看过的相册里面

尼玛,坑啊!!flag已经有了,知道出题人的名字(董进)和密钥(63542021127)和开房时间,去查开房记录,最后得到身份证为:310104199208314813,然后生成flag:31010419920831481363542021127。

八十六、我吃三明治

应该是一道图片隐写

binwalk发现有两个jpg

foremost导出两个jpg

在两张图的拼接出发现有内容,可能是base64之类的

用这个解不出来不知道为什么

以后还是不用这个网址的base解码了

八十七、[GUET-CTF2019]zips

看题目就知道了有很多的zip压缩包

有密码

这个111压缩包也有密码

但是这里打不开

应该是伪加密

改00

这是一段python代码,输出的是时间戳,意思是flag.zip的密码就是某一个时间戳,这就是第一次遇到掩码爆破的题目

设置掩码15????????.??,掩码符号?

不必设置小数点后那么多位,那个爆破一下子是爆破不出来的

flag{fkjabPqnLawhvuikfhgzyffj}

这里有几个坑

之前一直不能运行,说什么无效的口令范围,然后我就把高级的掩码符号重新输了一遍然后乱搞就成了,反正就这样设置的,到底什么原因我也不知道

然后就是这个爆破需要一点时间,记得把windows的性能拉满可以快一倍的速度

八十八、从娃娃抓起

这题好像做过好几次类似的

这就是邓小平说的计算机要从娃娃抓起

是中文电码http://code.mcdvisa.com/

然后后面的字母一下子不知道是什么,先百度一下有什么人工智能的名言

人工智能的最高成果是自由和谎言

这句不对,没了,那就猜人工智能也要从娃娃抓起

flag{3b4b5dccd2c008fe7e2664bd1bc19292}

成了,其实这个是五笔编码

以后看到这张编码要多想到有五笔编码的可能,不一定只有栅栏和凯撒

八十九、[GKCTF2020]code obfuscation

这题写过呀,但是当时没有写出来

直接拿之前的wp图片了

这个就是看运气了,运气好就可以直接扫出来,不然就是自己重新拼

看这个hint就很明显了,说明图片有压缩包

发现foremost提取不出来rar

那个密码hint说要加密,一般就是Base这类了,base58成功

得到一张图片和一段杂乱的js代码

先美化再整理一下

https://tool.lu/js/

1
2
3
4
5
6
7
for n in a b c d e f g h i j k l m n o p q r s t u v w x y z do eval An = "n"
done
for n in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z do eval An = "n"
done num = 0
for n in a b c d e f g h i j do eval Bn = "n"
num = $((num + 1))
done alert("Bk=' ';Bm='"';Bn='#';Bs='(';Bt=')';By='.';Cb='';Cc='<';Ce='>';Cl='_';Cn='{';Cp='}';Da='0';Db='1';Dc='2';Dd='3';De='4';Df='5';Dg='6';Dh='7';Di='8';Dj='9';")

贴一个别人写的python脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import string
s = "$Bn$Ai$An$Ac$Al$Au$Ad$Ae$Bk$Cc$As$At$Ad$Ai$Ao$By$Ah$Ce$Ai$An$At$Bk$Am$Aa$Ai$An$Bs$Bt$Cn$Ap$Ar$Ai$An$At$Bs$Bm$Aw$Dd$Al$Ac$Da$Am$Ae$Cl$De$Ao$Cl$Dj$Ak$Ac$At$Df$Bm$Bt$Cb$Ar$Ae$At$Au$Ar$An$Bk$Da$Cb$Cp"
ll = s.split('$')
list1 = ['Bk','Bm','Bn','Bs','Bt','By','Cb','Cc','Ce','Cl','Cn','Cp',
'Da','Db','Dc','Dd','De','Df','Dg','Dh','Di','Dj']
list2 = [' ','"','#','(',')','.','','<','>','_','{','}','0','1','2','3','4','5','6','7','8','9']
list3 = []
list4 = []
s = string.ascii_lowercase
for i in s:
list3.append('A%s'%i)
list4.append(i)
#print(list3,'\n',list4)

t = ''
for i in range(0,len(ll)):
for j in range(0,len(list1)):
if ll[i]==list1[j]:
t += list2[j]
for k in range(0,len(list3)):
if ll[i]==list3[k]:
t +=list4[k]
print(t)

flag{w3lc0me_4o_9kct5}

九十、[WUSTCTF2020]alison_likes_jojo

压缩包里面有两张图片,其中一张binwalk发现压缩包,压缩包需要密码,爆破就出来了

标题时base的意思吧

解了三次base64出来这个killerqueen

还有一张图片没用,怀疑是某个需要密码的图片隐写

本来用这个stegdetect可以检测隐写的,但是好像检测不出来,那就一个个试试

试一试outguess隐写

1
outguess -k killerqueen -r jljy.jpg -t flag.txt

flag{pretty_girl_alison_likes_jojo}


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!