Shino Channel
$ sudo echo Shino >> YourHeart$ sudo echo Shino >> YourHeart
Shino published on 碎碎念
好久没打 CTF 感觉能力退化了不少,遇到不是 Android 的题都有点不会做了,甚至卡了一题光荣成为战犯(?)。想了半天为什么 10 解的题我都不会做,后来发现原来现在还有可以直接去除的 ollvm 混淆…. 平时看到的 ollvm 混淆基本都是加强过的根本没法直接跑轮子去除就根本没往这方面想,还是有点太唐了。
Shino published on 前言
最近正好做到了针对安卓某 APP 内置浏览器抓包相关的东西,顺手记录一下。
Shino published on 碎碎念
本文也可以改名《Shino 为什么是一个啥比》,一个首波逆向题坐牢两天没做出来(还是我太菜了)
Shino published on 碎碎念
应该是在 Straw Hat 队认真打的第一场国际赛事吧,可惜半天左右就把逆向全打完了(驾驶员技能发动 我一个人就够了.jpg),有些失望(但是很爽)。
Shino published on 打开看到 Golang 字样,使用 go_parser 恢复一下符号。
https://github.com/0xjiayu/go_parser
1 2 3 4 5 6 7 v24 = "115.239.215.75"; v25 = 14LL; v26 = "12345"; v27 = 5LL; *((_QWORD *)&v2 + 1) = 2LL; v7 = os_exec_Command(); v12 = os_exec__Cmd_StdoutPipe(v7); 奇妙的逻辑,可以通过字符串判断是 nc 取数据,nc 115.239.215.75 12345 看一眼拿到的数据,形式如下:
1 2 3 4 5 6 7 {1801 [ {1878 1630 {1600 1047 1355}} {1968 1923 {1602 1096 1287}} {1805 1572 {1600 1102 1283}} {1963 1669 {1600 1165 1327}}] 4} 看数据 parse 逻辑,从.rodata段残留的结构体信息恢复结构体:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 struct City { Name: int; Neighbours: []NeighbourCity; Delta: uint8 } struct NeighbourCity { Name: int; Distance: int; Cost: Cost; } struct Cost { Transportation: int; Time: int; Expense: int; } 看 FindPath 逻辑,简单易懂,每次选一个 NeighborCity,加上Distance,减去 Transportation, 异或 Time,乘上 Expense,加上点 Delta,找一条五种权重都满足约束的路径。
Shino published on 碎碎念
刚进黑灯模式就出了flag,看到还是 0 解题以为可以拿全场唯一解光荣退役了,结果平台的flag配置是烂的,以为 0 解的原因是平台烂直接找运维对线,拉扯了一个小时左右赛后说 pwsh 需要人工验证flag以为其实大家都会做只是没交上,第二天起床一看还真是一血全场只有 2 解。也算光荣退役了?