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

[BJDCTF2020]The mystery of ip1

提示

  1. ssti模板注入
  2. head头x-forwarded-for

每一次做题的最开始流程都大致因该是

  1. 信息收集
  2. 找可以操控的地方

查看hint页面的源代码又发现它提示说

####你知道为什么会知道你的ip吗

查看flag页面

从刚才给我的提示以及他这里显示的我的ip,大概找到了我可操作的可控点

既然它会读取我访问它的ip并显示,那么我可以通过修改我的ip以达到执行命令的效果

这里抓包使用x-forwarded-for验证

从它返回的页面来看是可以利用的

现在就是判断这里应该怎样去利用

从经验上来判断这里很像是ssti模板注入

尝试验证一下

这里传入了${7*7}页面返回了执行过后的结果说明这里存在ssti注入

!!!!如果报错或者不执行也不一定是错的,最后会讲解

现在判断是那种模板

这里传入a{*comment*}b后回显ab,说明这里是smarty模板

应为smarty是php的模板所以直接尝试rce

{system('ls')}

这里回显出flag.php文件,直接cat

这里并没有回显

猜测这里只是一个障眼法

看一下跟目录

出现flag,这里应该就没问题了

获得flag

SSTI模板注入

SSTI就是服务器端模板注入

当前使用的一些框架,比如python的flask,php的tp,java的spring等一般都采用成熟的的MVC的模式,用户的输入先进入Controller控制器,然后根据请求类型和请求的指令发送给对应Model业务模型进行业务逻辑判断,数据库存取,最后把结果返回给View视图层,经过模板渲染展示给用户。

漏洞触发的原因未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。其影响范围主要取决于模版引擎的复杂性。

大致意思呢就是:

没有将数据区于语句分开,导致他们被当成一个整体了

$output = $twig->render("Dear {first_name},", array("first_name" => $user.first_name) );
以上并不会早场ssti漏洞注入,应为执行区域和数据区域不在同一个地方
$output = $twig->render("Dear " . $_GET['name']);
这里呢就会造成ssti漏洞,这里接受数据后就直接执行了,可能会方便用户使用,但是也同时会被别有用心的人构造payload来注入

可通过一下方式来判断是什么模板从而进行下一步的渗透

输入{{7*'7'}}返回49的是jinja2模板。返回7个7的是twig模板

!!!!!!!!!!最后,ssti主要的还是知道他是那种模板,知道了以后去网上搜怎么注入,怎么查版本信息,就能获得更过注入点。

相关文章:

  • 【C】内存函数
  • mybatis配置文件中配置类型别名的方式
  • illuminate/database 使用 四
  • External model DLL ”ADC083XDLL“ not found_proteus仿真报错解决方法
  • 解决No module named ‘ultralytics‘
  • SD卡选型参考
  • 论文阅读 (106):Decoupling maxlogit for out-of-distribution detection (2023 CVPR)
  • 多模态——使用stable-video-diffusion将图片生成视频
  • SSM家具个性定制管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
  • 动态规划经典例题leetcode思路代码详解
  • Oracle-客户端连接报错ORA-12545问题
  • Unity UGUI的自动布局-LayoutGroup(水平布局)组件
  • 深入了解Java中SQL优化的关键技巧与实践
  • 【迅搜03】全文检索、文档、倒排索引与分词
  • ZKP11.4 Use CI to instantiate Fiat-Shamir
  • 自己简单写的 事件订阅机制
  • 2017 年终总结 —— 在路上
  • canvas 五子棋游戏
  • iOS编译提示和导航提示
  • Iterator 和 for...of 循环
  • JavaScript-Array类型
  • k8s如何管理Pod
  • Making An Indicator With Pure CSS
  • NSTimer学习笔记
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 对超线程几个不同角度的解释
  • 使用parted解决大于2T的磁盘分区
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • #、%和$符号在OGNL表达式中经常出现
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (HAL库版)freeRTOS移植STMF103
  • (多级缓存)多级缓存
  • (多级缓存)缓存同步
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net mvc 获取url中controller和action
  • .NET 发展历程
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @RequestBody与@ModelAttribute
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [100天算法】-不同路径 III(day 73)
  • [AIGC] Redis基础命令集详细介绍
  • [AIGC] Spring Interceptor 拦截器详解
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务