MRCTF Writeup

记录一下第一次CTFφ(゜▽゜*)♪学了小半个月匆匆上阵全程陪跑但打得很愉快!

Misc

  • Cyberpunk

算是签到题吧,把本地时间改成2020.09.27应该就可了?我的做法是拖到ida里搜索字符串直接找到flag
MRCTF Writeup_第1张图片

  • 不眠之夜

想暴打出题人x
120块切割后的图片,我把脸拼出来之后百度识图找到原图然后把原图叠在下面拼到大致可以看出来flag(笨方法),看Ga1@xy师傅的wp是说可以用工具montage和gaps
MRCTF Writeup_第2张图片

  • 你能看懂音符吗

用WPS打开doc文件,在选项中勾选显示隐藏文字,就可以看到被隐藏的一串音符密码
MRCTF Writeup_第3张图片

MRCTF Writeup_第4张图片

可以找到现成的文本转音符加解密工具,输入音符解密即可得到flag
MRCTF Writeup_第5张图片

文本转音符工具

  • 寻找xxx

看到有师傅wp写直接听出来电话号码,真是羡慕这乐感T T
我一开始听了好多遍总是把其中几个数字混淆,然后发现b站一个up主的教程【小教程】如何根据按键音来判断号码

在Au中打开音频文件,调出频谱图,通过放大和增大频谱分辨率可以看到每个按键音对应两条细线,右侧是每条线对应的赫兹
MRCTF Writeup_第6张图片

而按键音采用的是一种双音多频的信号方式DTMF
MRCTF Writeup_第7张图片

从而可以根据高低群Hz数确定每个按键音
最后得出的电话号码是18684221609,发给Merak公众号,得到flag
MRCTF Writeup_第8张图片

  • 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))

运行脚本,发现爆破成功,得到正确的图片和flag一枚~
MRCTF Writeup_第9张图片

  • Unravel!!

这题蛮有意思的hhhhh
打开发现三个文件,依次下手
MRCTF Writeup_第10张图片

用010editor打开UnravelJM.png,搜索字串504B0304(zip压缩包文件头)发现一个压缩包,提取出来解压得到一张图aes.png

MRCTF Writeup_第11张图片

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秒出...
MRCTF Writeup_第12张图片


Crypto

  • keyboard

这题还想了挺久(其实贼简单)
英文九键,数字个数表示该键的第几位
MRCTF Writeup_第13张图片

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)
MRCTF Writeup_第14张图片

根据提示这个是栅栏密码,栏数为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)

跑出来flag
MRCTF{@_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开头的只能绕过弱类型比较)
MRCTF Writeup_第15张图片

第一步完成√
passwd弱类型比较,使passwd=1234567a即可
post data可以用hackbar提交passwd

MRCTF Writeup_第16张图片

得到flag
MRCTF{55035245-0178-457d-a97a-0c32e8509e0e}

  • 珠心算擂台

不知道咋做...本来是在一边想另一题一边算算术,结果真的算了1k道算术题然后拿到了flag...蹲一个其他dalao的wp让菜狗好好学习一下
MRCTF Writeup_第17张图片


Summary

看得出来师傅们的题出得很用心了,有难度也有梯度,这次只做出来一些简单题,pwn因为环境问题虚拟机装了坏坏了装最后成功0get T T,接下来会好好学pwn和re,明年我还来.jpg

垫底人士坐看榜一榜二神仙打架,能和各位大佬同台竞技菜狗非常高兴
MRCTF Writeup_第18张图片

你可能感兴趣的:(ctf)