贵阳之旅及2023蓝帽杯半决赛WP

文章发布时间:

最后更新时间:

文章总字数:
1.5k

预计阅读时间:
5 分钟

贵阳之旅

初赛随便混了点取证没想到还进了半决赛,坐六个多小时高铁到贵阳线下打线上赛(指线下可联网且赛制和线上完全一样)。

半决赛前入门取证事实证明还是有用的,可惜半决赛只考了手机取证和 app 取证,要是再加上服务器取证,电脑取证和内存取证,其他分析软件就也能派上用场了。

去打线下赛竟然忘记带笔记本充电线了,难受得要死,幸好遇到了好心工作人员(警哥)借了我一条,下次一定要检查好所有设备再出门()。

第一天到的时候已经晚上8点多了,而且经开车师傅介绍,这附近没什么不那么酸辣的餐馆,本想着只能又叫麦或肯,结果发现警训楼里面还有饭提供,虽然口味一般,但是确实能吃饱。

晚上和广大方班的南溟师傅和 CharOn 师傅聊了很久,很开心,感觉南溟师傅像可靠的大学长(

第二天正式比赛,不得不说还是有点紧张的,买了杯瑞幸只喝了几口。一开始我就去做取证题,先观望 web 是否多人解出。取证13/15的时候发现 web 还是零人解出,我就接着攻克14题,发现14题需要逆向或者搭建安卓开发环境,马上开搭,搭了半天还没搭好(赛后发现搭安卓开发环境真的要人命)。

去看 web 题,有个附件,下载下来竟然是公共靶机的ip和端口!!竟然不是源码!竟然是公共靶机!!!之前被公共靶机恶心过,总有人拿到 shell 之后往上面写假的 flag 文件来恶心别人,或者上传一堆垃圾。我看了看题,感觉是 xss,但是过滤之后没什么头绪,就把代码粘到了 Google ,发现这竟然是一道原题!(更让我震惊的是下午出的另一道 web 也是原题,这个 saferman (初赛和半决 web 出题人)估计是个前端工程师)。看了一下原题的题解,运用的是侧信道攻击,赶紧拿下脚本开始跑。

脚本跑着跑着出了个 503,又得重跑,我想:不妙了,估计靶机被人侧到服务不正常。果然,不管我 sleep 多少都会时不时出现 503,一出现 503 我就得重跑。到比赛结束之前我跑了二十多次都不行,我放弃了(后来拍照的时候听说有人跑了4个小时出来了,南溟说他5分钟就出来了)害,真应该早上就做。。

比赛结束了,进前20,排在26,没能进到决赛,不过终于没那么紧张了,坐了一天感觉腰酸背痛。拍完照赶紧出去贵阳市中心转转,转来转去其实也啥都没看到,晚上景点基本都关门了,而且这里也没什么景点。7点多为了体验当地特色,吃了个家常菜,5个人人均73,我的评价是味道很家常,价格不家常。晚上9点的时候在路上已经人影稀疏了,而且很多店都关了,有点黑,还时不时看到那种通向不知何处的全黑的巷子(真的会有人走这种巷子吗),感慨这里还是不如深圳广州的夜生活。转了两圈回去了,第二天一早就赶往贵阳北站,又坐了六个多小时高铁回来。

回来之后感慨还是深圳好啊,感觉宿舍是真的舒服,饭堂是真的好吃啊()。这种出差还是不宜太多,回来躺了两天,还有点精神涣散。

总结:不虚此行!但下次不想去了。

一些花絮

高铁上所见的桂林

186c3a4b10577ffadb0b620b3e76abc

e1e8606892572478d84c96b10c6a5fe

到站

052167827d899239e1b1f7f7e88ed9f

7点多到达警训楼

64ca780f48e65bca8824b7110c8cf86

faf3e2cee5d290bdd355aa7d6131c91

一堆取证软件但是没有用上几个

8b58c01a5067c1ebcde50e0b8af7feb

丰盛的自助餐(但是吃不惯或者本来就不是很好吃)

8dd10dd54cfec8fd753f8a508b5d0d1

强互作用力宇宙探测器

585857a0d3e7bd762f29bd8b29ea40f

一张合影:“里面有你认识的人吗?”

1f9c3abd88933e35efe5cd21f83d785

贵阳市中心(大概是中心)

4fa75e89d6de3840cbf9d85d552e812

一大早启程返深

8c071e30d3070c00fa4bb11f5e26d9c

终于回到学校

a6847064a98f9fa04f62fee1d0d5197

WEB&取证WP

WEB

web 两道原题,说实话没啥意思,saferman 真的很会出题!

贴上链接记录一下这次比赛的所有 web 题都是原题(两道题都只改了前端,处理逻辑和源码完全一样,对着原题学习也是一样的)。

第一道题侧信道攻击:

https://github.com/amelkiy/write-ups/tree/master/CCC/36c3/WriteupBin

https://blog.csdn.net/keyball123/article/details/104508815

第二道题 log4j lookup漏洞:

https://logging.apache.org/log4j/2.x/manual/lookups.html

https://sigflag.at/blog/2022/writeup-googlectf2022-log4j/

本题只需要完成这篇文章里说的第一关。

取证

仅为记录答案正确的,不考虑格式问题(赛后因为格式改了两道题的答案),仅供参考!!!

1

image-20230916094513374

logs.log

image-20230916094639293

09-11 17:21 (文字游戏)

2

image-20230916091021041

image-20230916091036035

24.32

3

image-20230916091109182

image-20230916091213532

sailfish

4

image-20230916091228394

image-20230916091246115

352531082716257

5

image-20230916091610047

image-20230916091839368

contacts.db

6

image-20230916091632145

image-20230916092542389

应用日志不同应用应用标识不同,经审查都不同

205(正确答案是206,我也不知道是为什么())

7

image-20230916091646110

image-20230916095605774

image-20230916095632056

com.example.myapplication

8

image-20230916091654818

image-20230916100106779

SHA256-RSA

9

image-20230916091702634

从AndroidManifest.xml里面获取

image-20230916105715560

主要处理逻辑确实都写在这个入口类里面

10

image-20230916091713940

image-20230916095725273

image-20230916095947655

应该是3,根据描述需要读取通话记录和短信,要有权限

image-20230916100021689

11

使用 jadx 反编译出源代码分析

image-20230916101919651

image-20230916104040829

base64,后面解密的时候也可以使用base64直接解看来电

12

image-20230916103640783

base64 calllog

image-20230916103818110

2

13

image-20230916104141196

image-20230916104201201

短信记录是SMS,总共两次,先AES再base64

2

14

image-20230916104301733

key 要从 native 方法中获取,估计要搭安卓环境直接用 so 库或者逆向 so 文件,以后再来研究。