CISCNCTF2016抱大腿游记(初赛)

比赛官网

一些记录

  • 由于自己太弱了,整个过程就搞了搞MISC(脑洞题),然后在全程围观学长。顺便帮学长的妹子写了一道算法题,为学长留出更多的时间做WEB.[我好菜啊.jpg]

MISC1(压力传感器1)

  • 题目大意是给了一个16进制串和传感器ID 0xFED31F,然后你需要将其解码为16进制。
  • 题目提示为『曼联』
  • 由提示想到曼切斯特编码(Manchester code), 是一个同步时钟编码技术, 大概是高电平变到低电平表示0(10->0), 低电平变到高电平表示1(01->1), 标准有G. E. Thomas 和 IEEE 802两种, 其区别为两种编码相反, 一个是(10->0), 一个是(10->1). Manchester code在线编解码工具.
  • 将题目给出的16进制串转换为2进制并Manchester decode之后得到111111111111111101111111110010111111100000100110 000010101010101010011111
  • 将上串八位分割得到11111111 11111111 01111111 11001011 11111000 00100110 00001010 10101010 10011111, 每一段为1 byte
  • 然后发现将3 4 5分别翻转就和ID的二进制相同11111110 11010011 00011111FED31F
  • 因此大胆猜测 直接将每个byte翻转, 就得到了答案

MISC2(压力传感器2)

  • 在上题的基础上, 给了两个不同ID的压力传感器在压力为45psi和30psi时的16进制串, 问某一指定ID的压力传感器在压力为20psi时的解码结果
  • 根据上题的基础, 可以知道先Manchester decode之后, 前 2 byte为11111111, 3 4 5 byte表示ID, 猜测后4 byte为数据区
  • 还是像上题一样先将端序变换, 然后发现三组数据的中间的两 byte数据都相同, 猜测答案的这两byte也会是这样
  • 然后分析第一个byte, 发现45psi对应的数据十进制为99, 30psi对应数据的十进制为66, 猜测25psi的数据为55(0x37),
  • 最后1byte实在没发现规律, 但是1byte数据总共只有256种可能, 于是我选择了暴力猜解, 写了如下Python代码暴力提交

  • 暴力正确

MISC3(永不消失的密码)

  • 题目给了一段音频
  • 很容易发现这是莫斯码(Morse code)
  • 解码得到HLEICICTSTWOOCFEMCN1, 长度为20
  • 发现其中有CTF字样, 想到栅栏密码
  • 将其5个字符一组分组HLEIC, ICTST, WOOCF, EMCN1.
  • 按照栅栏密码规则, 依次取出HIWE, LCOM, ETOC, ISCN, CTF1. 串起来得到HIWELCOMETOCISCNCTF1
  • 提交正确

总结

  • 其他各种神题(PWN REVERSE WEB…)都是学长做的, 我也不会, 还需要学习一个.
  • 最终排名第4, 决赛8月在上海, 听说比赛形式是攻防, 还没参加过呢!
  • 完整的Writeup在这: Writeup
  • 感谢学长带我这个啥也不会的弱智飞!

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注