WeChall - Tribal Revival

Challenge

题面给两条 stream:一条是 TBS 用户名/字符组成的 carrier,另一条是由空格、^、数字、符号组成的 encoded stream。solution 绑定 session。

Solution

公开源码片段显示:

1
2
3
$coolPeople = require 'secret_carrier_message.php';
$message = get_tbs_message();
list($encoded, $carrier) = tbs_encode($message, $coolPeople);

因此目标是反转 tbs_encode(message, coolPeople)

路线:

  1. 每次刷新抓取 carrier 和 encoded,注意 carrier 基本固定,encoded 中 caret/space 位置变化。
  2. 去掉 carrier 前缀中明显非用户名的 TBS STILL LIVES! 后再对齐。
  3. 统计 encoded 字符集,建立每个符号/数字到 carrier 位置或字符差的映射。
  4. 多次刷新对同一 message 采样,利用随机 caret/space 的变化消去噪声。
  5. 结合 TBS 用户名列表/bright-shadows 站点资料恢复 message。

答案 session-bound,不能复用别人页面里的 encoded stream。