前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSTI 学习笔记

SSTI 学习笔记

作者头像
全栈程序员站长
发布2022-11-01 10:23:08
5820
发布2022-11-01 10:23:08
举报
文章被收录于专栏:全栈程序员必看

PHP SSTI(Twig)

学习文章

进入环境,左上角有flag,hint

都检查看看

flag页面显示ip,hint页面源代码有提示

考虑XFF头或者referer头

测试一下

注:这里不用加上“;”

出来了

python flask ssti

学习文章

原理:因为对输入的字符串控制不足,把输入的字符串当成命令执行。

漏洞产生主要原因:render_template渲染函数的问题

渲染函数在渲染的时候,往往对用户输入的变量不做渲染, 即:{undefined{}}在Jinja2中作为变量包裹标识符,Jinja2在渲染的时候会把{undefined{}}包裹的内容当做变量解析替换。比如{undefined{1+1}}会被解析成2。因此才有了现在的模板注入漏洞。往往变量我们使用{undefined{这里是内容}} 真因为{undefined{}}包裹的东西会被解析,因此我们就可以实现类似于SQL注入的漏洞

像文件包含,有一个include函数,sql注入,似乎都有些共同点,都是利用某个函数或者其他的东西,执行恶意的命令

因为我们需要执行一些命令,例如,file、read、open、ls等等

就需要去调用这些函数

这就需要用到这个魔术对象

__class__ :返回类型所属的对象 __mro__ :返回一个包含对象所继承的基类元组,方法在解析时按照元组的顺序解析。 __base__ “返回该对象所继承的基类 // __base__和__mro__都是用来寻找基类的 __subclasses__ 获取当前类的所有子类 __init__ 类的初始化方法 __globals__ 对包含(保存)函数全局变量的字典的引用

通过魔术对象调用我们需要的函数,例如

代码语言:javascript
复制
>>> [].__class__.__base__.__subclasses__()[2]
<class 'weakcallableproxy'>
>>> [].__class__.__base__.__subclasses__()[3]
<class 'weakproxy'>
>>> [].__class__.__base__.__subclasses__()[40]
<class 'wrapper_descriptor'>

Bugku Simple_SSTI_1

进入环境

查看源代码

意思是我们需要传一个flag变量,并且提示我们有个secret_key

测试下有没有ssti

有的,我们去看看sectet_key

这里是需要大写的

Bugku Simple_SSTI_2

进入环境

源代码并没有提示,只是让我们传一个pass变量

这里证明有ssti那就看看目录

一个一个看下,先看app

有flag目录

Bugku Flask_FileUpload

进入环境

源代码里有提示

上传文件,会用Python执行文件返回结果

先随便上传个文件试试

发现只能上传jpg或者Png

那就改下后缀继续上传

会在源代码里返回执行的结果,那么可以试试命令执行

抓flag

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179436.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PHP SSTI(Twig)
  • python flask ssti
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档