HNCTF的pyjail做题过程详解
简述:
因为本人对python的内置函数理解也不是深入,在做题过程中也是靠着出题人的hint和google大法才做出来几题,详细的解题过程和知识点讲解可以看一下春哥的知乎,[PyJail] python沙箱逃逸探究·总览(HNCTF题解) - 知乎 (zhihu.com)
解题记录:
1.python2 input
2.calc_jail_beginner_level1
题目:
限制了很多东西,可以写脚本生成编码绕过,得到flag
3. pyjail
题目限制长度为13,使用pyload:exec(input()) 绕过输入长度限制
4. calc_jail_beginner_level3
题目限制长度小于7,只能使用help()命令
查看sys模块,信息收集了解到当查看的模块的内容过多时,会使用more命令翻页查看内容,造成溢出执行命令
5. calc_jail_beginner_level2.5
题目:
在level2的基础上过滤几个函数造成无法输入,这个时候使用breakpoint()函数进入pdb调试模式
查阅资料理解后,先用step进入模块,可以使用list查看当前代码块,发现输入的内容被input_data变量接收(其实看题目附件也知道)
这个时候我们就可以把变量input_data的值重新赋值,之前是breakpoint()函数。
6. lake lake lake
存在后门,不过先需要key,使用globals()可以看到key
7. l@ke l@ke l@ke
长度受到限制,无法使用globals()了,只能help()命令
使用__main__可以查看当前模块的信息,包括全局变量
得到key