阴间 CTF 2025

阴间 CTF 2025
Aristore比赛地址:阴间 CTF 2025
比赛时间:4 Apr 2025 14:44 CST - 6 Apr 2025 14:44 CST
Misc
阴曹地府税务总局
Challenge
近年来,阴曹地府面临财政赤字,阎王爷特批成立了 "阴曹地府税务总局",专门对阳间烧给亡灵的冥币收税。然而,由于地府税务系统采用了一套基于 Python 随机数的税率波动算法,导致税率每时每刻都在变化,甚至有时会出现 "零税率" 的情况。
作为一名资深会计师,你在阳寿未尽时不慎掉入阴曹地府。为了回到阳间,你需要向地府税务总局贿赂足够的冥币,获取一张特殊通行证。但你需要预测税率波动,在低税率或零税率时交易,才能最大化你的有限资产。
hint: python
Solution
“基于 Python 随机数的税率波动算法” 那多半就是 random 库了
“每时每刻都在变化” 说明随机数的种子是时间戳
手动玩一遍发现服务器会在一开始就先给出 10 个税率,那么我就可以枚举近期的时间戳,然后通过对比找到正确的时间戳,进而推测出未来的税率,代码如下
1 | import random |
运行得到以下输出
1 | 找到正确的时间戳: 1743752564 |
根据上面的输出手动进行交易即可(懒得写代码了,反正手动也不复杂)
1 | ncat nc1.ctfplus.cn 13343 |
1 | geesec{M4st3r_0f_T4x_Ev4s10n_4nd_R4nd0m_Pr3d1ct10n} |
Web
生死簿查阅系统
Challenge
传闻,阎王爷座下有一本神秘典籍,记载天下众生命数。为追逐数字化潮流,阴曹地府上线了 "生死簿查阅系统"。然,此系统乃鬼斧神工,诡谲难测,唯有精通阴阳之道的黑客才能窥其奥秘。听说有位技术鬼才曾潜入系统,但被抓去做了拔舌地狱的测试员…
你,可敢一试?
HINT 第一层:YIN-HOUR:丑时三刻
HINT2: 阴~阳~两~界,生~死~轮~回,六~道~往~返,我~自~逍~遥 需要移除~转换为 阴阳两界,生死轮回,六道往返,我自逍遥
Solution
第一次拿到 1 血(可惜不是 misc 题)
虽然这题被放在了 Web,但我觉得把它归到 Misc
首先打开容器地址,根据题目引导要修改 HTTP 头,但是要怎么修改还不是很清楚(至少我做的时候是不清楚的,我这层过了才出提示呜呜呜),所以就写个脚本挨个试
1 | import requests |
此时的我还没有意识到问题的严重性,竟妄想在第一层就拿到 flag
不过运气还算不错,其中有一条被我撞对了,摸到了第二层的门槛
根据这条线索立马更新脚本
1 | import requests |
又根据提示可以知道要新增两个 header,按要求写就好了
1 | import requests |
此时得到了新的提示,这里考察的是 PHP 中的 MD5 弱比较绕过,在 MD5 绕过第一式:弱比较绕过这篇博客可以找到符合条件的值 0e215962017
,把这个参数传上去就好了
1 | import requests |
根据提示加一个鬼门关
参数就好了,随便填什么那就不填(懒)
1 | import requests |
根据前面的经验(需要添加的参数都会被出题人用 ·
给围起来,就比如说前面的 ·鬼门关·
和这里的 ·八卦·
), 所以就先新增一个参数八卦
其实我也不知道要填什么,想着先这么写了,要是有什么要算的后面再说,没想到竟然就这么过了(后来在群里看到有的师傅在提算卦这件事真的觉得挺搞笑的)
那么还是按照这个规律增加 阴历
和 转生术
这两个参数
1 | import requests |
根据提示把 甲子年正月初一
填到 阴历
根据提示填写符合格式要求的六位数字
再根据提示把数字改为 000004
1 | import requests |
curl
的 -d
参数其实就是使用 POST
方法
在这里就是把请求方法从 GET
改成 POST
,然后请求体填入提示给的咒语
这里我不得不吐槽一下了
这玩意儿疑似鬼魂作祟,要把 ~
去掉
这一点后来新增了提示,因此请求体就是 阴阳两界,生死轮回,六道往返,我自逍遥
1 | import requests |
根据提示新增参数 密码
,不传东西就把答案告诉我了 029755
1 | import requests |
用的是脚本看到的本身就是网页源代码
这次是新增参数 真解
和 查阅
这里前面说我 持有的'真解'不正确
,后面又给出了一个答案 ▁▁▁▁▁▁ ▁▁▁ ▁▁▁▁▁▁ ▁▁▁▁▁▁ ▁▁▁▁▁▁▁▁ ▁▁▁ ▁▁
,那很明显这里给出的答案就是 真解
的
接着又给出了 查阅
的答案 mingfu_zhenjie
1 | import requests |
这里说还缺三个关键参数,先根据题目要求填上去
final_incantation
的计算公式是 新字符 = (原字符的 Unicode 编码 - 0x4e00 - 13) % 总范围 + 0x4e00
,明文是 地府无常,勾魂索命,生死判定,我命由我
1 | def enc(text): |
输出得到 圣序旓師,勱鬵紕呰,甒歮列宍,戄呰甤戄
soul_phase
的计算公式是 soul_phase = ((日期 + 月份) % 4 + 1) * 90
今天是 2025年4月4日
,带入得到 soul_phase = ((4 + 4) % 4 + 1) * 90
,口算一下得到 90
karma_hex
的计算公式是 karma_value = (日期 * 31 + 月份) * 100 + 年份的最后两位
,然后转为十六进制
带入公式得到 karma_value = (4 * 31 + 4) * 100 + 25
1 | karma_value = (4 * 31 + 4) * 100 + 25 |
输出得到 003219
1 | import requests |
就差最后一步了,提示说阎王爷的密码就在:ghosssssssssssssssssssssssssttttt
,因此只要查阅 ghosssssssssssssssssssssssssttttt
即可
最终的 exp 如下:
1 | import requests |
1 | geesec{6601bea6-bebf-49e5-8a02-402454cd245a} |