记录一下第一次CTFφ(゜▽゜*)♪学了小半个月匆匆上阵全程陪跑但打得很愉快!
Misc
Cyberpunk
算是签到题吧,把本地时间改成2020.09.27应该就可了?我的做法是拖到ida里搜索字符串直接找到flag
不眠之夜
想暴打出题人x
120块切割后的图片,我把脸拼出来之后百度识图找到原图然后把原图叠在下面拼到大致可以看出来flag(笨方法),看Ga1@xy师傅的wp是说可以用工具montage和gaps
你能看懂音符吗
用WPS打开doc文件,在选项中勾选显示隐藏文字,就可以看到被隐藏的一串音符密码
可以找到现成的文本转音符加解密工具,输入音符解密即可得到flag
寻找xxx
看到有师傅wp写直接听出来电话号码,真是羡慕这乐感T T
我一开始听了好多遍总是把其中几个数字混淆,然后发现b站一个up主的教程【小教程】如何根据按键音来判断号码
在Au中打开音频文件,调出频谱图,通过放大和增大频谱分辨率可以看到每个按键音对应两条细线,右侧是每条线对应的赫兹
而按键音采用的是一种双音多频的信号方式DTMF
从而可以根据高低群Hz数确定每个按键音
最后得出的电话号码是18684221609,发给Merak公众号,得到flag
ezmisc
这是一道PNG中CRC检验错误的图片隐写,拖到Ubuntu虚拟机里发现打不开并显示CRC Error,在010editor中打开图片,获取PNG的CRC值和宽、高,写个py脚本,通过爆破图片修改前的宽和高来匹配CRC校验码,并用正确的宽和高来修复图片
先尝试爆破高度,脚本如下:
# -*- coding: utf-8 -*-
import binascii
import struct
#\x49\x48\x44\x52\x00\x00\x01\xF4\x00\x00\x01\x3F\x08\x02\x00\x00\x00
crc32key = 0x370C8F0B
for i in range(0, 65535):
height = struct.pack('>i', i)
#CRC: 370C8F0B
data = '\x49\x48\x44\x52\x00\x00\x01\xF4' + height + '\x08\x02\x00\x00\x00'
crc32result = binascii.crc32(data) & 0xffffffff
if crc32result == crc32key:
print ''.join(map(lambda c: "%02X" % ord(c), height))
Unravel!!
用010editor打开UnravelJM.png,搜索字串504B0304(zip压缩包文件头)发现一个压缩包,提取出来解压得到一张图aes.png
根据这个png名称,我想到了aes加解密,那Tokyo就应该是密钥了,密文在哪呢,看到这个音乐名称Look_at_the_file_ending,就想到用010editor打开它,拖到末尾,发现一串字符y=U2FsdGVkX1/nSQN+hoHL8OwV9iJB/mSdKk5dmusulz4=
用在线aes加解密解出明文CCGandGulu
这就是Unravelwin-win.zip的密码,解压得到Ending.wav
说来惭愧我本来以为最后一层是MP3Stego解密,试了很久未果,用SilentEye秒出...
Crypto
keyboard
这题还想了挺久(其实贼简单)
英文九键,数字个数表示该键的第几位
6 61 m
666 63 o
22 22 b
444 43 i
555 53 l
33 32 e
7 71 p
44 42 h
666 63 o
66 62 n
3 31 e
天干地支+甲子
也是非常简单的一道题,天干地支有各自对应的数字,+甲子即+60,然后转换成ASCII码
甲戌 11 71 G
甲寅 51 111 o
甲寅 51 111 o
癸卯 40 100 d
己酉 46 106 j
甲寅 51 111 o
辛丑 38 98 b
古典密码知多少
蓝色部分是猪圈密码,黄色部分是猪圈密码的变体圣堂武士密码,黑色部分为银河语言(银河语言找了好久才找到hhh)
根据提示这个是栅栏密码,栏数为5
FGCPF
LIRTU
ASYON
从上到下从左到右即可得到flag:FLAGISCRYPTOFUN
RE
xor
一道简单异或题,jio本如下:
a=[0x4d,0x53,0x41,0x57,0x42,0x7e,0x46,0x58,0x5a,0x3a,0x4a,0x3a,0x60,0x74,0x51,0x4a,0x22,0x4e,0x40,0x20,0x62,0x70,0x64,0x64,0x7d,0x38,0x67]
i=0
c=''
for i in range(len(a)):
a[i]^=i
c=c+chr(a[i])
print(c)
跑出来flagMRCTF{@_R3@1ly_E2_R3verse!}
Web
ez_bypass
现学现卖的简单web题
md5强类型比较和is_numeric函数绕过
关键代码段如下
if(isset($\_GET\['gg'\])&&isset($\_GET\['id'\])) {
$id=$\_GET\['id'\];
$gg=$\_GET\['gg'\];
if (md5($id) === md5($gg) && $id !== $gg) {
echo 'You got the first step';
if(isset($\_POST\['passwd'\])) {
$passwd=$\_POST\['passwd'\];
if (!is\_numeric($passwd)){
if($passwd==1234567){
echo 'Good Job!';
highlight\_file('flag.php');
die('By Retr\_0');
}
md5强类型比较可以用数组绕过(用md5值是0e开头的只能绕过弱类型比较)
第一步完成√
passwd弱类型比较,使passwd=1234567a即可
post data可以用hackbar提交passwd
得到flagMRCTF{55035245-0178-457d-a97a-0c32e8509e0e}
珠心算擂台
不知道咋做...本来是在一边想另一题一边算算术,结果真的算了1k道算术题然后拿到了flag...蹲一个其他dalao的wp让菜狗好好学习一下
Summary
看得出来师傅们的题出得很用心了,有难度也有梯度,这次只做出来一些简单题,pwn因为环境问题虚拟机装了坏坏了装最后成功0get T T,接下来会好好学pwn和re,明年我还来.jpg