HNCTF的pyjail做题过程详解

简述:

因为本人对python的内置函数理解也不是深入,在做题过程中也是靠着出题人的hint和google大法才做出来几题,详细的解题过程和知识点讲解可以看一下春哥的知乎,[PyJail] python沙箱逃逸探究·总览(HNCTF题解) - 知乎 (zhihu.com)

解题记录:

1.python2 input

 2.calc_jail_beginner_level1

题目:

限制了很多东西,可以写脚本生成编码绕过,得到flag

 3. pyjail

题目限制长度为13,使用pyloadexec(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

posted @ 2022-11-08 11:07  nLesxw  阅读(2547)  评论(0编辑  收藏  举报