2017广东省第二届"强网杯"信息安全攻防赛-writeup

前言

​ 赛事:广东省第二届 “强网杯”
时间:2017年9月9日10:00——2017年9月10日18:00,共32小时 (预赛)
题目涵盖:Misc、Crypto、Web、Reverse、Pwn
文章说明:作为勉强进入决赛的队伍,我们还是有很多题没有解出来,所以文章参考公众号名为 “CTFer的魔法棒”

附上一张微信公众号二维码

0x01 Misc-writeup

Bubble


题目如下


推测是一种编码方式,结合编码知识和网络搜索分析出是Bubble Babble Binary Data Encoding。
参考地址:http://bohwaz.net/archives/web/Bubble_Babble.html
参考地址:http://www.cnblogs.com/pcat/p/7501782.html
编写脚本
1
2
3
4
5
from bubblepy import BubbleBabble
s='xinik-samak-luvag-hutaf-fysil-notok-mepek-vanyh-zipef-hilok-detok-damif-cusol-fezyx'
a=BubbleBabble()
s1=a.decode(s)
print s1


Random


题目如下


还原加密算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# uncompyle6 version 2.11.5
# Python bytecode 2.7 (62211)
# Decompiled from: Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)]
# Embedded file name: encrypt.py
# Compiled at: 2017-07-11 17:19:27
from random import randint
from math import floor, sqrt
_ = ''
__ = '_'
____ = [ ord(___) for ___ in __ ]
_____ = randint(65, max(____)) * 255
for ___ in range(len(__)):
_ += str(int(floor(float(_____ + ____[___]) / 2 + sqrt(_____ * ____[___])) % 255)) + ' '
print _
# okay decompiling encrypt.pyo

代码做了混淆导致可读性很低,尝试还原代码

1
2
3
4
5
6
7
8
9
10
from random import randint
from math import floor, sqrt
ciphertext = ''
plaintext = '_'
array = [ord(i) for i in plaintext]
key = randint(65, max(array)) * 255
for i in range(len(plaintext)):
ciphertext += str(int(floor(float(key + array[i]) / 2 + sqrt(key * array[i])) % 255)) + ' '
print ciphertext

分析代码:
  密钥key虽然是生成随机的,但是并不安全,因为它的生成范围为(65, max(array)),而array为可显明文的十进制ASCII值,也就是说key的最大生成范围为(65, 127),而以上代码是逐个字符进行加密,且每次都是使用同一个密钥key,在已知密文的情况下我们可以考虑使用蛮力攻击爆破明文。计算次数为:
19 (明文长度) (127 - 65)(可能明文) (127 - 65)(可能密钥) = 70360


0x02 Crypto-writeup

RSA


0x03 Web-writeup


0x04 Reverse-writeup


0x04 Pwn-writeup

最后:我们不生产水,我们只是大自然的搬运工。