HITCON 2021 Misc Writeup

FBI WARNING(orange)

1
2
3
4
5
Please help FBI to arrest Ωrange!
(Flag format: hitcon{<ip-address-of-Ωrange>})
(Hint: The prefix of the IP address is 219)
http://3.112.91.135/
Author: orange

网站如下:

找了找相关的该网站的相关的源码 找到了

https://github.com/futoase/futaba-ng/blob/master/app/dest/futaba.php

本题的主要部分

对应的相关代码

1
define("IDSEED", 'idの種');		//idの種
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$c_pass = $pwd;
$pass = ($pwd) ? substr(md5($pwd),2,8) : "*";
$youbi = array('日','月','火','水','木','金','土');
$yd = $youbi[gmdate("w", $time+9*60*60)] ;
$now = (
gmdate("y/m/d",$time+9*60*60) .
"(" .(string)$yd . ")" .
gmdate("H:i",$time+9*60*60)
);

if(DISP_ID){
if($email&&DISP_ID==1){
$now .= " ID:???";
}else{
$now.=" ID:".substr(crypt(md5($_SERVER["REMOTE_ADDR"].IDSEED.gmdate("Ymd", $time+9*60*60)),'id'),-8);
}
}

从这里我们可以得知id生成的规则

再加上提示中说ip的前面部分是219

写脚本来解密(by stypr)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

for($i=0;$i<256;$i++){
for($j=0;$j<256;$j++){
for($k=0;$k<256;$k++){
$actual = "219.".$i.".".$j.".".$k."idの種". "20211203";
$val = substr(crypt(md5($actual), "id"), -8);
if($val == "ueyUrcwA"){
echo $actual;
break;
}
}
}
}
?>

跑出对应的ip

1
2
$ php a.php
219.91.64.47idの種20211203

flag:

1
hitcon{219.91.64.47}

baba is misc:

1
2
3
4
5
6
7
8
9
BABA IS MISC
MISC HAS FLAG
FLAG HAS WORD AND SPACE
FLAG IS WIN
baba_is_misc-b6a43cc8b24d3cc1592077f68d5089c0491b6021.bin
Author: ddaa

hint:
The flag prefix `hitcon{` is lower case. The other words in flag content are uppercase.

下载下来发现是个pfs0文件 挂载后发现是一个baba is you的游戏

https://github.com/jakcron/nstool 进行分离 分离出program.nca的主程序

再使用https://github.com/SciresM/hactool 分离相关的文件 可以分离出相关的配置与Lua文件

然后发现大部分是原始的游戏资源,但是玩通关也没有flag

第0关的标题是 find all flag in maps

且同时告诉了我们第一部分flag的信息是hitcon{

之后通过下载steam上原始的baba is you文件 然后与题目的资源进行diff

发现level0 17 21 80 82 101 111 130 176的地图与之前存在改变

这就意味着这些地图内可能存在的相关flag的信息

使用https://github.com/ShootMe/BabaIsYouEditor 解析地图

level0: hitcon{

level17: BABA IS YOU

level21: IS A

level80: GOOD

level82: GAME

level101:BUT

level111: TOO

level130: DIFFICULT

level176: !!!!!!}

当然这当时的!是猜出来 后来看discord上讨论需要安装最新的游戏扩展

看来我运气还是不错

最后总结得到

1
2
3
4
5
6
7
8
9
000 -> hitcon{
017 -> BABA IS OOU
021 -> IS A
080 -> GOOD
082 -> GAME
101 -> BUT
111 -> TOO
130 -> DIFFICULT
176 -> !!!!!!!}

flag:

1
hitcon{BABA IS YOU IS A GOOD GAME BUT TOO DIFFICULT !!!!!!}