C1CTF2017 部分题目题解

0x01 MISC-500 二维码

扫描二维码出来BASE64, 但解出来却是一堆乱码…但是在其中发现有MICS.PYT的字眼.百度了一下发现了python还有PYC这种东西. 将BASE64解码出来的乱码以十六进制保存后, 将其上传到一个在线反编译的网站反编译后就可以得到含有加密算法的的PY源代码. 下面附上加密源码和写了一晚上的解密源码QAQ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import base64

def encode(str1):
key = '1234'
enc = ''
flag = ''
for i in range(0, len(str1) - 1):
enc = enc + chr(ord(str1[i]) ^ ord(str1[i + 1]))

enc = enc + str1[-1]
for i in range(0, len(enc)):
flag = flag + chr(ord(enc[i]) ^ ord(key[i % len(key)]))

return base64.b64encode(flag)

def decode():
base64code="Q2AkJiwdD29dXm45IDk6MBoEKRgYISQ/Fwg3Jjs2Tg=="
key='1234'
hexdata=base64.b64decode(base64code)
flag=''
strdata=''
resvflag=''
enc=''
for i in range(0,len(hexdata)):
enc=enc+chr(hexdata[i])

for i in range(0, len(enc)):
flag = flag + chr(ord(enc[i]) ^ ord(key[i % len(key)]))

for i in range(0,len(flag)):
resvflag=resvflag + flag[len(flag)-i-1]

strdata=strdata+'}'
for i in range(1,len(resvflag)):
strdata= strdata + chr(ord(resvflag[i]) ^ ord(strdata[i - 1]))

print(strdata[::-1])

decode()

得到 C1ctf{Th3_3ncrypt_is_very_easy}

0x02 MISC-200 冬天冷了, 织毛衣给你

之前不知道ZLIB是什么, 对着BINWALK的结果懵逼了一个小时.我一直以为只有zip, 7z啥的= =.百度了才知道还有这种操作. 把PNG图片后面(AE 42 60 82 78以后)的重新写到一个文件中 然后用py写个小程序解压一下就行

得到C1ctf{Do_Y0u_decompress_zlib}

0x03 WEB-100 Hack!Hack!Hack!

唯一做出来的web(逃 直接打开http://66.11.119.173:41062/, 发现phpmyadmin, 百度了半天, 以为是要拿webshell, 结果弄了半天发现并没有在/web50写入的权限… 最后发现直接读取文件不就得了, 随便选一个库, 执行语句.

1
load data infile '/tmp/flag.txt' into table a;

再看表a, 得到FLAG~ 但是薛神说解题过程都在 /web50 下面 我是不是又走邪道了?… PS:正确方法是通过robots.txt找到dropper.php(后门), 然后用菜刀连接即可

0x04 Crypto-150 The Baby RSA

之前对RSA并不了解, 之后会写一篇我对RSA的笔记← ←. 做题的时候傻乎乎的在http://factordb.com上没找到解, 就想强行暴力算.然而, 在等待暴力算的结果的同时玩RSATOOL2V17的时候发现当E=1的时候, 私钥就是1, 也就是说密文就是明文….有毒, 找到一个在线网址, 直接出 得到c1ctf{This_is_the_simple_attack}

0x05 Crypto-200 这样的加密你会不?

做到这题的时候 已经是19号21点了(刚下自习), 想想也就这题有可能了…之前就又感觉是凯撒(没有奇怪的符号出现)或者栅栏啥的, 但拿去尝试都不对…但是今天看着突然来了灵感 +8 、+9、 +23 某几位恰好能组成flag.再一看居然还是有规律的= =… 于是很开心的把密文拿去以题目中的方式解密…但是得到一堆乱码, 于是又对着屏幕发呆, 此时已经21:40..突然想起来ctf的尿性, 结合HINT的“密钥的顺序对么?”发现结果中含有fxxx、xlxx、xxag的结果, 拿出来破解, 果然是有意义的, 加上{、}得到flag.

PS: 其实是维吉尼亚密码, 也算是凯撒吧0.0

最后, 向曙光大佬低头