ZJCTF WriteUp —— Satan1a

1-1 石庆数码

(1)打开页面显示404,查看源码没啥东西。

(2)点击404页面的“GO BACK”,查看源码,发现一串注释,得到flag。

ZJCTF WriteUp —— Satan1a_第1张图片
1-1-1

1-2 眼疾手快

(1)老题目,打开源代码可以看到下面一段话,当满足条件后,会执行post clicks=1000000

ZJCTF WriteUp —— Satan1a_第2张图片
1-2-1

(2)头铁手动刚是不可能的23333,直接使用hackbar来post

ZJCTF WriteUp —— Satan1a_第3张图片
1-2-2

(3)直接Get Flag

ZJCTF WriteUp —— Satan1a_第4张图片
1-2-3

2-1 躲躲藏藏

(1)下载下来是一个二维码,扫描之后显示“you find me”。

(2)右键用压缩包方式打开,发现有密码,猜是伪加密,用winrar修复,得到rebuilt.DDoIM5Ez.png文件。

(3)压缩包方式打开,获得flag.xls文件,常规打开是一堆乱七八糟的东西。

(4)丢进虚拟机,使用命令strings flag.xls | grep zjctf初步得到flag串

2-1-1

(5)提交发现不行,仔细观察字符串,确定为ADFGVX加密,根据常规字母表,手动解出flag。

ZJCTF WriteUp —— Satan1a_第5张图片
2-1-2

4-1 你追我赶

(1)打开是个游戏,小恐龙真好玩23333,选择让它死一次,fine,控制台出现了新的信息。

4-1-1

(2)进入这个js,发现有输出正确flag的判断条件。

ZJCTF WriteUp —— Satan1a_第6张图片
4-1-2

(2)修改js。

ZJCTF WriteUp —— Satan1a_第7张图片
4-1-3

(3)保存之后重新玩一次。多次尝试,得到flag。

4-1-4

4-2 心有猛虎

此题nc换行之后啥都没有还以为没连上,迷……

一开始根据题目,以为是计算器,输入了1+1=,结果就退出了,猜测是等号被ban了。

ZJCTF WriteUp —— Satan1a_第8张图片
4-2-1

发现输入命令不能立刻输出到屏幕上,猜测是因为python的缓存机制导致执行虽然得到了执行结果但是没有立刻输出到屏幕上,再根据输入__builtins__会立刻返回一长串内容,所以猜测是要凑够一定的长度的输出才能让它立刻回显到屏幕上,等号触发了结束,会输出一堆内容,回显结果。

(后来Sgdream大师傅复现之后,告诉我以上猜测成立hhhh...感jio这个问题应该坑了不少队)

正经解题过程:

(1)xshell连上服务器,nc连接好,nice,根据题目”Welcome to ZJCTF Python clever calculator”,输入” __builtins__”,发现如图所示内容:

ZJCTF WriteUp —— Satan1a_第9张图片
4-2-2

(2)判断为python沙箱逃逸。然后各种尝试,发现被ban掉了不少东西,比如system、os等……

ZJCTF WriteUp —— Satan1a_第10张图片
4-2-3
ZJCTF WriteUp —— Satan1a_第11张图片
4-2-4

(3)查询资料,使用__import__函数绕过,用等号(=)结束,因为等号似乎被ban了,所以能直接退出。

查询当前目录:

__import__("pbzznaqf".decode('rot_13')).getstatusoutput('pwd')

ZJCTF WriteUp —— Satan1a_第12张图片
4-2-5

获取目录:

__import__("pbzznaqf".decode('rot_13')).getstatusoutput('ls')

ZJCTF WriteUp —— Satan1a_第13张图片
4-2-6

发现flag文件,直接cat,得到flag:

__import__("pbzznaqf".decode('rot_13')).getstatusoutput('cat flag')

ZJCTF WriteUp —— Satan1a_第14张图片
4-2-7


第一次遇到赛时五小时登录两小时的比赛hhh……特别感谢Sgdream大师傅之后的指点,重新了解了Python的缓存机制,美滋滋(ˇ∀ˇ)

你可能感兴趣的:(ZJCTF WriteUp —— Satan1a)