一、密码学 —— Crypto-xor2
查看 task.py 可知,key 为密钥,通过异或算法加密的密文为 cipher
cipher 为
将密文 cipher 与密钥再次异或可得出 flag
具体算法为
可得到 flag
二、逆向 —— Pyre
使用 pyinstxtractor 解包 exe
使用 uncompyle6 反编译 1.pyc
得到源码,check 函数为校验函数,直接编写爆破函数 crack:
def crack():
c = [144, 163, 158, 177, 121, 39, 58, 58, 91, 111, 25, 158, 72, 53, 152, 78, 171, 12, 53, 105, 45, 12, 12, 53, 12, 171, 111, 91, 53, 152, 105, 45, 152, 144, 39, 171, 45, 91, 78, 45, 158, 8]
b = 179
for enc in c:
for i in range(32,127):
if 33 * i % b == enc:
print(chr(i),end='')
break
crack()
运行得到 flag{2889e7a3-0d6b-4cbb-b6e9-04c0f26c9dca}
三、杂项 —— 复合
将 pcapng 重新保存为 pcap
使用 NetworkMiner 软件打开分析,发现 192.168.204.131 发送文件名称比较可疑
使用 word 打开 flagggggg.exe
发现有隐藏文字 Key:everything
使用 010editor 打开 pass.md ,发现文件是 zip,缺少文件头,手动补上文件头
修补完成后打开 zip,发现 Eva 文件,使用文本编辑器打开
使用在线工具解码得出
由于之前有key=everything
所以使用维吉尼亚密码解密得
发现 flag
flag{life_is_fantastic}
四、WEB —— easy_ctf
编写 exp 脚本:
from ntpath import join
import requests
import re
sess = requests.session()
def req():
url = ""
rep = sess.get(url)
find = re.compile(r'width="1600">(.*?)',re.S)
result1 = find.findall(rep.text)
str1 = result1[0].strip()
sort_str(str1)
def submit(d):
url = ""
rep = sess.post(url,d)
if "flag" in
rep.text:
print(rep.text)
def sort_str(str): # 调用、排序
m=[] #
resoult = {} # 定义空字典
for i in str: # 遍历字符串,存储在字典中
resoult[i] = str.count(i)
a1 = dict(sorted(resoult.items(),key=lambda a:a[1]))
c=a1.keys()
for i in c:
m.append(i)
data = ''.join(m)
d = {"ans":data}
submit(d)
while 1: #循环
req()
break # 跳出循环
五、WEB —— in
随意输入名称后,进入文件打开页面。易知此处有任意文件读取漏洞:
通过 base64 法读取 action.php 源码:
http://119.23.247.96:49003/action.php?file=php://filter/convert.base64-encode/resource=action.php
此处读取 name 参数进 session,那么可以考虑包含 session 文件实现 rce
爆破文件链接 ../../../proc/self/fd/*,得到10号文件为 session 文件:
直接写 session 为一句话:
蚁剑连接,注意设置 cookie:
最后在根目录找到 flag 文件,得到 flag
最后排名:
原文始发于微信公众号(NS Demon团队):第二届广东大学生网络安全攻防大赛TTL战队部分WP
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论