01 签到
- 点击
提取
按钮,发现地址栏出现.../?number=0
- 将
0
改为1
便得flag
02 猫咪问答++
百度一下即可;第一题较复杂,可枚举。
03 2048
F12发现提示:
1
2
3
4<!--
changelog:
- 2020/10/31 getflxg @ static/js/html_actuator.js
-->打开
static/js/html_actuator.js
文件,找到和游戏胜利有关的逻辑:1
2
3
4
5
6
7
8
9var url;
if (won) {
url = "/getflxg?my_favorite_fruit=" + ('b'+'a'+ +'a'+'a').toLowerCase();
} else {
url = "/getflxg?my_favorite_fruit=";
}
let request = new XMLHttpRequest();
request.open('GET', url);打开 Chrome 浏览器的开发者工具,切换到 Console 标签页,执行一下
('b'+'a'+ +'a'+'a').toLowerCase()
,得到正确的应该填入的值为banana
,访问/getflxg?my_favorite_fruit=banana
,则可以得到正确的 flag
04 一闪而过的 Flag
cmd运行文件即可。
05 从零开始的记账工具人
首先使用 Excel将下载的文件转换为
.csv
格式,即逗号分隔的文本然后在 Python 中安装 cn2an 这个中文数字转换的库:
python3 -m pip install cn2an
然后使用 Python 程序处理这个文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17import cn2an
lines = open('bills.csv').readlines()[1:]
s = 0
for line in lines:
a, b = line.strip().split(',')
n = 0
if '元' in a:
y, a = a.split('元')
n += cn2an.cn2an(y, "smart")
if '角' in a:
y, a = a.split('角')
n += cn2an.cn2an(y, "smart") / 10
if '分' in a:
y, a = a.split('分')
n += cn2an.cn2an(y, "smart") / 100
s += n * int(b)
print(s)四舍五入得flag
06 超简单的世界模拟器
T1 蝴蝶效应
百度“生命游戏”了解一下,为了消除右上角的方块,只要放置一个水平移动的“太空船”即可:
1 | 000000000000000 |
07 自复读的复读机
T1 反向复读
谷歌搜索“输出自己的程序”或者类似的词,可以查到这类程序叫做 Quine。
1 | exec(s:='print(("exec(s:=%r)"%s)[::-1],end="")') |
T2 哈希复读
1 | exec(s:='print(__import__("hashlib").sha256(("exec(s:=%r)"%s).encode()).hexdigest(),end="")') |
08 233 同学的字符串工具
T1 字符串大写工具
- 以 “unicode uppercase collision” 为关键字搜索,链接:https://eng.getwisdom.io/hacking-github-with-unicode-dotless-i/
- 找到一个连字(ligature)
fl (0xFB02)
- 这个“字符”将在转换为大写时变成
FL
两个字符!因此,只需输入flag
即可得到 flag
09 233 同学的 Docker
拉取镜像
docker pull 8b8d3c8324c7/stringtool
获取镜像历史构建信息,并标出层级:
sudo docker history 8b8d3c8324c7/stringtool
由此我们知道flag.txt是在倒数第二层被删除的,所以我们只需要找到该层的文件即可
用docker inspect 获取该层的diff路径:
sudo docker inspect 8b8d3c8324c7/stringtool
UpperDir 为最上层,其它从LowerDir一层层往下数。
选定LowerDir中的第一个,
sudo tree /var/lib/docker/overlay2/05c27a902f648e2f88d79a2498d6043bd2b8d5b01f15eb0ed4848dfff4ddad37/diff
查看:
sudo cat /var/lib/docker/overlay2/05c27a902f648e2f88d79a2498d6043bd2b8d5b01f15eb0ed4848dfff4ddad37/diff/code/flag.txt
10 从零开始的 HTTP 链接
- 整个腾讯云免费服务器,最好是ubuntu,centos配置环境老是出问题
- https://github.com/vi/websocat/releases 下载 websocat_1.6.0_ssl1.0_amd64.deb
- gdebi websocat….deb (根据提示install一下gdebi)
- 然后 websocat ws:// xxx.xxx.xxx.xxx:0/ shell
11 来自一教的图片
对图像二维傅里叶变换
代码如下:
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# -*- coding: utf-8 -*-
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
#读取图像
img = []
img = cv.imread('4f_system_middle.bmp', 0)
# if img:
# print(666)
#傅里叶变换
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
res = np.log(np.abs(fshift))
#傅里叶逆变换
ishift = np.fft.ifftshift(fshift)
iimg = np.fft.ifft2(ishift)
iimg = np.abs(iimg)
#展示结果
plt.subplot(131), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.axis('off')
plt.subplot(132), plt.imshow(res, 'gray'), plt.title('Fourier Image')
plt.axis('off')
plt.subplot(133), plt.imshow(iimg, 'gray'), plt.title('Inverse Fourier Image')
plt.axis('off')
plt.show()将得到的照片调整即可得flag
12 生活在博弈树上
T1 始终热爱大地
脚本如下:
1 | from pwn import * |
T2 升上天空
1 | from pwn import * |
13 超精准的宇宙射线模拟器
脚本如下:
1 | from pwn import * |
14 不经意传输
T1 解密消息
- v = x0
- m0 = m1 = m0_