攻防世界新手练习村

本文最后更新于:1 年前

如来十三掌

1
2
3
4
5
6
7
8
9
10
11
12
13
14
下载文件得到
夜哆悉諳多苦奢陀奢諦冥神哆盧穆皤三侄三即諸諳即冥迦冥隸數顛耶迦奢若
吉怯陀諳怖奢智侄諸若奢數菩奢集遠俱老竟寫明奢若梵等盧皤豆蒙密離怯婆
皤礙他哆提哆多缽以南哆心曰姪罰蒙呐神。舍切真怯勝呐得俱沙罰娑是怯遠
得呐數罰輸哆遠薩得槃漫夢盧皤亦醯呐娑皤瑟輸諳尼摩罰薩冥大倒參夢侄阿
心罰等奢大度地冥殿皤沙蘇輸奢恐豆侄得罰提哆伽諳沙楞缽三死怯摩大蘇者
數一遮
前面得到的信息要加上佛曰:
用与佛论禅解密得到:
MzkuM3gvMUAwnzuvn3cgozMlMTuvqzAenJchMUAeqzWenzEmLJW9
再根据提示用rot13解密得到:
ZmxhZ3tiZHNjamhia3ptbmZyZGhidmNraWpuZHNrdmJramRzYWJ9
再用base64解密得到flag
flag{bdscjhbkzmnfrdhbvckijndskvbkjdsab}

give_you_flag

1
2
3
4
5
6
7
下载文件得到一张图片,打开一看是动图

想到用stagesolve一帧一帧的看

得到一张残缺的二维码图片

补齐之后扫码得到flag

stegano

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
下载文件打开是pdf文件,全选文件复制到新建text中
发现顶部有BABA的东西,这里应该就是flag
想想怎么解码

就两个字母,首先想到的是敲击码
但是不对,又想到摩斯密码也是两个
尝试一下第一个 -表示B .表示A 得到字母C
手动替换
是不可能的
用txt把A 全部替换为.
B全部替换为-
解码得到:
CONGRATULATIONS,FLAG:1NV151BL3M3554G3
根据提示再替换大小写
flag{1nv151bl3m3554g3}

坚持60s

1
2
3
4
5
6
7
下载文件得到 jar文件,打开发现是个游戏。
用上下左右控制发现坚持60s比较困难,
jd-gui工具打开,搜索flag
在cn.bjsxt.plane.PlaneGameFrame中得到
flag{RGFqaURhbGlfSmlud2FuQ2hpamk=}
猜测是base64编码
解码得到flag{DajiDali_JinwanChiji}

gif

下载文件得到黑白图片,猜测是二进制
写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
25
 flag_dic = ""

white = open(r"D:\攻防世界\Misc\gif\gif\0.jpg","rb").read()
black = open(r"D:\攻防世界\Misc\gif\gif\1.jpg","rb").read()
#上面两句用于为下面的图片识别做个实例,定义什么图片是白色,什么是黑色

for i in range(104):
with open(r"D:\攻防世界\Misc\gif\gif\%d.jpg"%i,"rb") as f:
if f.read() == white:
flag_dic += "0"
else:
flag_dic += "1"
#上面循环语句用于识别D:\攻防世界\Misc\gif\gif\%d.jpg路径下的104
张图片的颜色,并给白色附值为0,黑色赋值为1

#print (flag_dic)
#用于测试打印识别后的二进制

flag = ""

for i in range(len(flag_dic)//8):
flag += chr(int(flag_dic[i*8:(i+1)*8],2))

print(flag)
#将二进制转化为字符串

运行脚本得到flag{FuN_giF}

掀桌子

观察到里面所有数据均为16进制,考虑到ASCII码,两个数转化为一个字节,
注意到2个数大于128进制,但ASCII是0-127,所以进行取余操作。
写python脚本

1
2
3
4
5
6
flag = ''
s='c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2'
l = len(s)//2
for i in range(l):
flag += chr(int(s[i*2:(i+1)*2], 16) % 128)
print(flag, end='')

运行得到Hi, FreshDog! The flag is: hjzcydjzbjdcjkzkcugisdchjyjsbdfr

ext3

1
2
3
4
5
这个关于linux的暂时不太会,在网上看大佬题解,不用linux也能做,用
Winhex 打开搜索flag,然后用360压缩,打开flag.txt
得到一个base64的编码:
ZmxhZ3tzYWpiY2lienNrampjbmJoc2J2Y2pianN6Y3N6Ymt6an0=
解码得到lag{sajbcibzskjjcnbhsbvcjbjszcszbkzj}

SimpleRAR

下载得到一个rar压缩包,解压得到一个flag.txt,但是flag不在这。
用WinHex打开,发现一个secret.png文件,查询rar的文件头,把7A改为74
如下图:

rar的知识点:

再解压得到一个图片,用stagsolve打开,点向左的按钮,得到半张二维码,再用Analyse中的Frame Browser ,发现有两张图片,保存第二章,用相同的方法,得到另半张,再用画图工具补全二维码,我这里用的是电脑自带的3D画图,感觉挺好用的,得到flag
二维码如下图:

base64stego

下载得到一个压缩包,打开有个txt文件,需要密码
用WinHex打开
压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记
3F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09
00打开就会提示有密码了)
压缩源文件目录结束标志 :50
4B 05 06:目录结束标记
把09 00改写成00 00就可以成功打开文件了
根据base64隐写
在网上查看大佬脚本(自己还不会写)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# -*- coding: cp936 -*-
import base64
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('C:\\Users\\zzh\Desktop\\base64\\stego.txt', 'rb') as f:
bin_str = ''
for line in f.readlines():
stegb64 = str(line, "utf-8").strip("\n")
rowb64 = str(base64.b64encode(base64.b64decode(stegb64)), "utf-8").strip("\n")
offset = abs(b64chars.index(stegb64.replace('=','')[-1])-b64chars.index(rowb64.replace('=','')[-1]))
equalnum = stegb64.count('=') #no equalnum no offset
if equalnum:
bin_str += bin(offset)[2:].zfill(equalnum * 2)
b=''.join([chr(int(bin_str[i:i + 8], 2)) for i in range(0, len(bin_str), 8)]) #8 位一组
data=""
m="flag{"+b+"}"
m = m.replace("\x00", "")
print(m)

运行得到flag{Base_sixty_four_point_five}


攻防世界新手练习村
http://example.com/2021/12/06/攻防世界新手练习村/
作者
zzh
发布于
2021年12月6日
更新于
2022年1月28日
许可协议
原文链接: HTTPS://ZHANGZHIHAO-BLOG.GITHUB.IO
版权声明: 转载请注明出处!