看雪 KCTF GMAE 闯关记

网址:KCTF

第一关:闯关游戏

 -.--/---/..-/.--/../-.

摩斯密码,Morse code,放到在线网站上:http://www.hiencode.com/morse.html

如果不能识别把 / 替换成空格

第二关:二维码

二维码修复,三个角为定位标志,固定形式,找个正常的二维码替换掉三个角的图标

 

 识别修复后的二维码得到flag

flag{62d0cbb2c69133b52f386701726f29c1}

第三关:错误的MD5

 base64解码得flag,直接提交是错识误的,题中说"错误的md5",一般MD5值是32位由数字“0-9”和字母“a-f”所组成的字符串,所以把里面的唯一可能有问题的字符修改一下提交,正确

正确的flag{b9768a37b47beb2d88e2db0e76a39bb3} 

第四关:盲文参照

 这题卡的有点久,开始一直想0和1去替换,最后发现以列为观察,盲文对照解出

答案:IKANXUE

第五关:看雪的历史

 下载附件得到一个txt文件,字符实有列数目明显不对,用vim打开可见

很显然是零宽度字符隐写,在上图中可以看到共有(<200c><200d><202c><feff>)四种零宽度字符,在线网站弄一下:https://330k.github.io/misc_tools/unicode_steganography.html

 勾选对应的字符编码

得到flag:flag{6af971a42782115a594ba2318c0417ad}

第六关:凯撒留下了什么?

 下载info.txt文件,全部为二进制,放到CyberCher会自动转码为文本:iodj{7115i261eig7i42d5fg7412fh86ded7h},{}有这两个符号,位置也对,题意很明确,凯撒加密,放到在线网站,偏移量可以根提第一个字符对应f去计算,也可以一个个数字去试,最后是3

flag{7115f261bfd7f42a5cd7412ce86aba7e}

第七关:110米要跨几个栏?

 下载文本文件,根据提示想到栅栏密码,栅栏密码有传统形和W型,这个是W型

 key为10的时候=号在最后,可base64解码得到flag

第八关:WinXor

 逆向题,取字符集进行异或,超哥解出

第九关:请看附件,一位土著告诉了你应该去哪里寻找你想要的当地特产 “振金”

下载png图片,010查正常,无隐写

 图片的名字为wakanda,找到一张瓦坎达文字对照表

 找到图案对应文字即为答案:YOUGOTIT

第十关:中午时分,云的影子比其它时刻小了许多。提交格式:flag{}.

 821010841088421108841022104084210884021084210841

下载txt文件,只含有5个数字01248,题目中又有云和影的提示,云影编码无疑

python脚本跑出来

#!/usr/bin/python
# -*- coding=utf8 -*-
def de_code(c):
    dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)]
    flag = []
    c2 = [i for i in c.split("0")]
    for i in c2:
        c3 = 0
        for j in i:
            c3 += int(j)
        flag.append(dic[c3 - 1])
    return ''.join(flag)

def encode(plaintext):
    dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)]
    m = [i for i in plaintext]
    tmp = [];flag = []
    for i in range(len(m)):
        for j in range(len(dic)):
            if m[i] == dic[j]:
                tmp.append(j + 1)
    for i in tmp:
        res = ""
        if i >= 8:
            res += int(i/8)*"8"
        if i%8 >=4:
            res += int(i%8/4)*"4"
        if i%4 >=2:
            res += int(i%4/2)*"2"
        if i%2 >= 1:
            res += int(i%2/1)*"1"
        flag.append(res + "0")
    print ("".join(flag)[:-1])

c = input("输入要解密的数字串:")
print (de_code(c))
#m_code = input("请输入要加密的数字串:")
#encode(m_code)

 KAMXUEDOTCOM直接提交还是不对,这个题目提示很有深意,我当时是“看”的拼音不对,就把M改为N,提交正确KANXUEDOTCOM

第十一关:伪加密

 还需要密码吗?看题目想到伪加密

用010editor打开,修改压缩文件加密标志位为00,保存后就没有密码了

flag{d9ae4d859de9b941af40f91f69b13f31}

第十二关:经典RSA

 p=1074058774204108249701494602945344702257295575959111855899071
q=88986629334781577655493187325102894512564116681307655782184342573939069819137
e=9540011292252897217

c=41548063605430288432470295597098485988788870848095534515875709414720207762389334011819123356492264118935214420228741427986850823373300101

已知N、e、c或已知p、q、e、c求m,直接上代码

import gmpy2
p = 1074058774204108249701494602945344702257295575959111855899071
q = 88986629334781577655493187325102894512564116681307655782184342573939069819137
e = 9540011292252897217
c = 41548063605430288432470295597098485988788870848095534515875709414720207762389334011819123356492264118935214420228741427986850823373300101
n = p * q
fn = (p - 1) * (q - 1)
d = gmpy2.invert(e, fn)
h = hex(gmpy2.powmod(c, d, n))[2:]
if len(h) % 2 == 1:
    h = '0' + h
s = str(bytes.fromhex(h))
print(s)

第十三关:流量分析

 下载流量包文件,wireshack打开,FTP流量。统计--》协议分级

 data上右键,查找,找到对应数据包,追踪TCP流直接出flag

或者直接过虑:tcp contains flag

第十四关:逆向

逆向题,不会,求助超哥

第十五关:幸福的小羊,快乐的狼

下载题目附件,解压后有1296张小图片,很明显的CTF拼图题,主要用到了montage和gaps,这两个工具安装是重点:https://blog.csdn.net/qq_68643282/article/details/132393550

安装好后,执行命令先把所有小图片拼合成一张图片

montage ./*.png -tile 36x36 -geometry +0+0 flag.png 

由于这些小图片不是正方形,需要把生成的图片调整到长和宽一样的,便于后续操作,这期间做了很多操作,最后都没有得到正常的图片,可能跟小图片数量或者小图片颜色非常相近有关,后面换了一种思路,观察montag生成的图片发现含有flag字符的大概就在两行中(sheep649.png-sheep720.png),共72张小图片,我把拿跟这两行有关的图片复制到一个文件中来生成

montage ./*.png -tile 36x2 -geometry +0+0 flag.png 

调整图片高度为1584*88

gaps run ./flag.png newfalg.png --generations=72 --population=20 --size=44 

最后得到正常显示flag的图片

第十六关:access数据库解密

网上找了款ACCESS数据库密码的小工具,直接查看数据库密码:

使用access 2003版本打开flag.mdb文件可以看到flag

第十七关:md5加密

根据提示主要是找到DATE的具体数值后进行md5,打开压缩文件可以看到文件的具体目期

echo -n "hashcat_20221207"|md5sum

## c24dfa5bb27682d52bad1a77a32f6178

## flag{c24dfa5bb27682d52bad1a77a32f6178}

第十八关:RSA解密,小e攻击

第十九关:jpg隐写

steghide info Mona.jpg,检测发现隐写了flag.txt

# steghide info Mona.jpg
"Mona.jpg":
  format: jpeg
  capacity: 14.9 KB
Try to get information about embedded data ? (y/n) y
Enter passphrase: 
  embedded file "flag.txt":
    size: 38.0 Byte
    encrypted: rijndael-128, cbc
    compressed: yes

steghide extract -sf Mona.jpg 解出flag.txt

第二十关:套娃

shell脚本循环解压,最后在目录中查看flag文件

#!/usr/bin/env bash

while [ -e *.zip ]; do
    files=*.zip;
    for file in $files;do
        echo "解压 ${file}........";
        password="kxyyds";
    unzip -q -P "${password}" "$file";
    rm "${file}";
    done;
done;
echo "全部解压完成,请查看目录文件flag";

第二十一关:冰蝎流量解密

一直找不到冰蝎的key,010eidtor打开在结果有明文flag,不知道是不是非预期解

第二十二关:RAS广播攻击

第二十三关:逆向

IDA远程调试,随便输一长串不会出现的字符,逐一取得d1的值,转为字符串即为flag

第二十四关:源码查看

访问:​​​​​​

http://58ca072d-1dc0-4a2c-88bd-943e4564f27a.node.kanxue.com:81/Game/1-05692bfa06986eab/challenge1.php

查看源码得到base64的flag字符串

第二十五关:GET

get传参?value=flag拿到flag

第二十六关:POST

curl -X POST -d 'value=flag' http://02a2908d-663c-4dfc-b64c-936b9167b4c4.node.kanxue.com:81//Game/3-d30a4b81c0398567/challenge3.php

第二十七六:is_number绕过

curl http://bc61ab1d-cf37-4871-855a-b309acfa4cd6.node.kanxue.com:81//Game/8-84f7fd029d72f436/challenge8.php?value=65535d

第二十八、二十九关重复:背景图F5隐写

git clone https://github.com/matthewgao/F5-steganography

kali默认的版本不行,切换到java 11

java Extract /tmp/picture.jpg -p ikanxue

查看output.txt文件得flag

第三十关:cookie

查看源码得知flag在cookie中

curl -I http://2a2f3207-9dc6-4b39-bde1-d1f68daa0b40.node.kanxue.com:81//Game/4-2db6aef1f225f344/challenge4.php

第三十一关:XFF

提示仅内网访问

curl -H "X-Forwarded-For:127.0.0.1" http://6f4e4076-0706-4e13-ac58-1f8a9816769f.node.kanxue.com:81/Game/6-432f430c11fd0943/challenge6.php

第三十二关:弱口令

brup爆破,admin,1234321

第三十三关:设置cookie

抓包改包传递一个大一点时间戳base64编码

GET /Game/11-580e84c1bb47bcd5/challenge11.php HTTP/1.1
Host: 1b3295a4-79f0-4a1c-a67c-d4420649c3f3.node.kanxue.com:81
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Cookie: sign=MTg3MzAzNjgwMA==
Connection: close

第三十四关:js逆向

提取代码的数组,用python异或出flag

t= [62, 52, 57, 63, 35, 58, 106, 105, 61, 106, 104, 108, 60, 60, 96, 60, 58, 105, 108, 105, 106, 111, 59, 97, 62, 59, 97, 108, 104, 108, 107, 110, 57, 57, 62, 105, 109, 37]

for x in t:
    print(chr(x ^ 88),end='')

第三十五关:RSA解密

下载私钥,在线解密得到flag

第三十六关:js解码

控制台运行代码,得到flag

第三十七关:

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值