web刷题记录(6)

news2025/1/12 19:55:17

[GXYCTF 2019]BabyUpload

文件上传,先传个普通的一句话木马试试 ,发现提示被限制了,文件后缀不可以有ph,那么php3,php5,phtml等后缀自然无法使用了

        那这里的思路我觉得应该是,先判断到底是文件内容被黑名单了,还是文件后缀被黑名单了,一句话来说就是它审核的是文件类型还是文件内容,所以这里选择传个jpg的图片马看看

文件是传上去了,但是文件的木马并没有被传上去,或者说木马的内容没有被执行

那么这里考虑应该就是,对文件的内容进行了判断,那么这里的思路就是再上个.htaccess文件或者.ini文件让图片马的内容被执行

说明上传类型有问题,抓包更改,因为图片形式可以传成功,所以就改成图片形式

 上传成功了,然后再上传图片马,获得了路径

访问看看路径

被成功执行,那现在直接用蚁剑连接

在根目录里面找到了flag文件

拿到了flag

[HNCTF 2022 Week1]easy_upload

还是先上传一个纯木马,看看限制条件

访问

蚁剑连接,虚拟终端,命令cat /f*

得到了flag

[SWPUCTF 2022 新生赛]ez_rce

看看源码

源码里面也没有东西,这里我的思路呢是用dirsearch或者御剑扫扫看,看看有没有什么有用的文件

根据经验这里先选择看看,robots.txt文件,看看有没有什么有用的信息

这里给了提示,访问这个网页看看

这里给的提示就是,Think PHP 5 RCE漏洞,然后版本是5.0

http://node5.anna.nssctf.cn:29559/NSS/index.php/?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=命令内容

然后不断执行命令查看目录,查看flag相关文件就可以了,这里题目环境出问题了,不能执行,隔了一天也没用,所以就不演示了

[NISACTF 2022]bingdundun~

文件上传,给了提示,是要图片类型或者压缩包类型

这里选择先上传一个图片马试试看

获得了路径,访问

返回了一开始的页面,说明木马可能没有被执行

蚁剑连接,发现确实没有被执行成功,本来的思路是再传一个.htaccess文件,然后抓包改类型

但是不行,ini文件也是一样,还是传不上去,看了其他师傅的wp以后发现这里要用的是phar协议

phar协议

phar:// — PHP 归档

phar://、zip://、bzip2://、zlib://

        用于读取压缩文件,zip:// 、 bzip2:// 、 zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可修改为任意后缀:jpg png gif xxx 等等。(Phar伪协议是PHP的一个特性,它允许直接从Phar归档中读取文件,而不需要将Phar文件解压)

        了解这个知识点以后呢,这道题就有两种解法了,一种是改一句话木马文件的后缀改成zip,然后用phar协议读取一句话木马文件;另外一种是构造phar文件,phar文件包含想要执行的代码,由于index页面提示,flag就在该目录下,因此如果能直接执行cat /flag 就能出结果了。

        这里先补充一个细节。

 即url有参数bingdundun,和flag文件位置提示

方法一:phar协议读取一句话木马

phar://example.phar/somefile.php

解释:phar://是协议,example.phar是Phar文件的名称,somefile.php是Phar文件中的一个PHP文件。

上传成功(为什么最后不是/shell.php而是/shell,是因为后台会自动加上.php,后面知识点会提),检测路径以后,蚁剑连接就可以

然后再根目录找flag文件就可以了

方法二:构造phar文件

先创建一个pharfile.php文件


    $phar = new Phar("example.phar"); //后缀名必须为phar
    $phar->startBuffering();
    $phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub
浏览器访问该文件,在同目录下会生成exp.phar文件。复制一份改成zip格式,然后上传,上传了以后,用phar协议读取创建的pharflie.php文件用&连接里面的参数

[SWPUCTF 2022 新生赛]where_am_i

进来给了提示,11位数字,盲猜电话号码,随便输了一个

但是不对,爆破也跑不出来,猜测应该是这个店的电话号码。。。那就变成misc了

百度识图找了一下

百度找了一下电话

得到了flag

[MoeCTF 2022]baby_file、

就给了一个参数,扫扫后台还有没有什么文件

发现了一个flag.php文件,filter伪协议读取

解码,得到flag

[SWPUCTF 2022 新生赛]xff

关键词:自己的电脑。抓包改个xff看看

又给了提示,jump from home page,要从主页跳转,那就改一下refer头(它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源)

得到了flag

[鹤城杯 2021]Middle magic

代码审计

三层

第一层:GET传参,需要传入一个参数,对其进行正则替换掉/^(.*)level(.*)$/得到$aaa,再对$aaa正则匹配,需匹配到pass_the_level_1#

        在正则匹配单行模式(?s)下 ,.号将匹配所有字符,包括换行符;但默认情况下点号不匹配换行符,因此给了绕过(.*)的可能。

payload:%0apass_the_level_1%23,%0a、%23分别是换行符、井号的URL编码。

进入第二层

第二层:

sha1强比较,可以用数组绕过,利用哈希函数无法处理数组,会返回结果null,POST传参的形式

进入第三层

第三层:需要传入一个level_3参数,经过json_decode()之后与内置的$result变量弱类型比较相等(==)

        具体来说,要求我们POST提交一个level_3变量,是json格式的。要满足level_3变量的result键的值 与$result变量相等,但是$result变量在index.php中未定义,在result.php中是否定义,未知,所以$result变量具体值是多少我们无从得知。暂且将他当成未定义,那么值就是空,NULL。实际测试证明,这里level_3只要POST了就行,值是多少都可以。因为空NULL和什么东西弱比较都是true,那么就验证了猜想,$result变量未定义。

那以下payload都可行

&level_3={“result”:“chxvjxkvjckvrfghrekj”}  //随机值
&level_3={“result”:0}  //值为0
&level_3={“result”:} //值为空
&level_3= 

得到了flag

知识点

文件上传

相关资料参考

文件上传漏洞类型汇总(详细)_上传文件漏洞-CSDN博客

文件上传漏洞总结(含原因+防御措施)+白名单+黑名单+内容、头+解析漏洞/修补方案_00截断修复方案-CSDN博客

其他扩展的话,还是要通过多做题来积累

Thank PHP v5 框架漏洞

简介:thinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞。该更新主要涉及一个安全更新,由于[框架]对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本。
此版本是5.0版本所以可以利用此漏洞查找flag
这个漏洞我们可以在网上找到payload,?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=
1.index/是对应的模块
2.\think\app 以反斜线开头,这就是我们想要实例化的类
3./invokefunction是让\think\app类想要调用的方法,
4.function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1是对应invokefunction的参数。(这里的phpinfo和1,是可变参数,比如可以为system和ls /

phar
       

        PHAR(PHP Archive)是一种用于将多个PHP脚本文件打包成单个归档文件的格式。这种文件格式旨在简化PHP应用程序的分发和部署,并提供了一种安全的方式来执行和管理PHP代码。PHAR文件可以包含PHP脚本、资源文件、配置文件等,并且可以被像任何其他PHP脚本一样执行。

         1.phar 伪协议无论读取什么文件,都会将其视为压缩包进行解压缩,然后作为 php 代码执行,在文件上传类漏洞中经常被用到。

        2.Phar伪协议是PHP的一个特性,它允许直接从Phar归档中读取文件,而不需要将Phar文件解压。这样可以直接从Phar文件运行PHP脚本,而无需在服务器上物理地提取文件。

例如,如果你有一个名为example.phar的Phar归档文件,你可以通过以下URL运行其中的PHP脚本:

phar://example.phar/somefile

在这个URL中,phar://是协议,example.phar是Phar文件的名称,somefile.php是Phar文件中的一个PHP文件。

提到这里的话,再提一嘴其他的

        phar://、zip://、bzip2://、zlib://都可用于读取压缩文件,zip:// 、 bzip2:// 、 zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可修改为任意后缀:jpg png gif zip xxx 等等。而phar://的伪协议,可以将任意后缀名的压缩包(原来是 .phar 或 .zip,注意:PHP > =5.3.0 压缩包需要是zip协议压缩,rar不行 ) 解包,从而可以通过上传压缩包绕过对后缀名的限制,再利用伪协议实现文件包含。

        而在涉及知识点题目中,url栏有个GET传参。传值为index,发现回显好多个//index.php,猜测这里传参,会自动帮我们加上一个.php,我们传?bingdundun=index,后台解析为?bingdundun=index.php,然后进行文件包含。所以读取文件没有后缀加php。

再详细的phar博客

『PHP』phar文件详解_phar文件格式_调用phar类方法生成phar文件_php phar-CSDN博客

preg_replace()

preg_replace() 是 PHP 中用于执行正则表达式替换的函数。它可以在字符串中搜索符合正则表达式模式的部分,并将其替换为指定的内容。这个函数的语法如下:

preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count = NULL ]]) : string|array|null

参数说明:

  • $pattern:要搜索的正则表达式模式。
  • $replacement:替换模式。可以是字符串,也可以是字符串数组。如果是字符串数组,则替换与模式匹配的内容时会依次从数组中选择替换的内容。
  • $subject:要在其中进行搜索和替换的目标字符串或字符串数组。
  • $limit(可选):指定最大替换次数。默认值为 -1,表示无限制地进行替换。
  • &$count(可选):一个变量,用于存储替换次数。

preg_replace() 函数返回替换后的字符串或字符串数组,如果没有找到匹配项,则返回原始的 $subject

        简单来说,

preg_replace:只能匹配一行的数据。

如果代码替换了abc,但后面又要求有abc,可以用%0a(换行符)

%0apass_the_level_1%23        %0a换行符,%23井号。

举个例子,假设我们有一个字符串,想要将其中所有的数字替换为 "X",可以使用 preg_replace() 函数实现:

$str = "Today is 2024-06-13."; $newStr = preg_replace('/\d/', 'X', $str); echo $newStr; // Output: Today is XXXX-XX-XX.

在上面的例子中,正则表达式 /d 匹配任意数字,然后将其替换为 "X"。

json_decode()函数

     json_decode() 是 PHP 中用于将 JSON 格式的字符串转换为 PHP 变量(通常是数组或对象)的函数。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于阅读和编写,也易于解析和生成。

     json_decode() 函数会尝试将 JSON 字符串解析为 PHP 变量,并返回解析后的结果。如果解析成功,则返回相应的 PHP 变量;如果解析失败,则返回 NULL。如果给定了 $assoc 参数,并且其值为 TRUE,则返回的是关联数组;否则返回的是对象。

扩展

CTF(JOSN弱类型)_ctf json-CSDN博客

JASON格式与布尔绕过弱类型比较_json数组绕过-CSDN博客

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

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

相关文章

6.13--CSS

行内样式 <!DOCTYPE html> <html lang"en"> <head> <title>This is title</title> </head> <body> <p style"font-size: 16px; color: red;">大家好</p> </body> </html> 内部样式表…

讯飞有一个可以根据描述文本自动生成PPT的AI接口,有趣

文档&#xff1a;https://www.xfyun.cn/doc/spark/PPTGeneration.html 价格方面提供了免费1000点的额度&#xff0c;生成一次是10点&#xff0c;正好100次&#xff0c;如果要购买的话最低要购买1344元的&#xff0c;没有按量付费的模式&#xff0c;个人小开发者可买不起。 让我…

【灵动之链】打造高效处理架构的双轨组合模式实战

文章目录 打造高效处理架构的双轨组合模式实战目标概述场景一&#xff1a; 注解驱动的Chain设计说明 场景二&#xff1a;工作流调度 - List与Set注入的Chain设计说明 总结 打造高效处理架构的双轨组合模式实战 目标概述 本教程旨在阐述两种不同的组合模式实现方式&#xff0c;…

【计算机毕业设计】258基于微信小程序的课堂点名系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

MathWorks的介绍,以及Simscape 的主要特点

MathWorks 是一家美国的软件公司&#xff0c;以其科学计算软件为广泛知名&#xff0c;特别是 MATLAB 和 Simulink。这两款产品广泛用于工程、科学研究、学术界和工业应用中&#xff0c;帮助用户进行数学计算、算法开发、数据可视化、数据分析&#xff0c;以及仿真和模型构建。 …

前缀和(一维前缀和+二维前缀和)

前缀和 定义&#xff1a; 前缀和是指某序列的前n项和&#xff0c;可以把它理解为数学上的数列的前n项和&#xff0c;而差分可以看成前缀和的逆运算。合理的使用前缀和与差分&#xff0c;可以将某些复杂的问题简单化。 用途&#xff1a; 前缀和一般用于统计一个区间的和&…

GoldWave 6.80最新版软件安装包下载+详细安装步骤

​GoldWave是一款易上手的专业级数字音频编辑软件&#xff0c;从最简单的录制和编辑到最复杂的音频处理&#xff0c;恢复&#xff0c;增强和转换&#xff0c;它可以完成所有工作&#xff0c;包括WAV、OGG、VOC、 IFF、AIFF、 AIFC、AU、SND、MP3、 MAT、 DWD、 SMP、 VOX、SDS、…

【Intel CVPR 2024】通过图像扩散模型生成高质量360度场景,只需要一个语言模型

在当前人工智能取得突破性进展的时代&#xff0c;从单一输入图像生成全景场景仍是一项关键挑战。大多数现有方法都使用基于扩散的迭代或同步多视角内绘。然而&#xff0c;由于缺乏全局场景布局先验&#xff0c;导致输出结果存在重复对象&#xff08;如卧室中的多张床&#xff0…

【Go】用 Go 原生以及 Gorm 读取 SQLCipher 加密数据库

本文档主要描述通过 https://github.com/mutecomm/go-sqlcipher 生成和读取 SQLCipher 加密数据库以及其中踩的一些坑 用 go 去生成读取 SQLCipher 数据库用 gorm 去读取 SQLCipher 数据库在生成后分别用 DBeaver、db browser 和 sqlcipher 读取 SQLCipher 数据库&#xff0c;…

GIS开发到底能应用在哪些行业 ?

GIS应用的领域到底有多广&#xff1f;恐怕很多GIS从业者都想不到。 尤其是近些年&#xff0c;互联网GIS的普及与发展&#xff0c;GIS技术的应用领域越来越多&#xff0c;涉及的范围也越来越广。很多我们以为跟GIS不相关的行业&#xff0c;都在悄悄用GIS技术。 从大类上分析&a…

EFuse概念解析

EFuse概念解析 EFUSE Key Parameter iNOM 代表的是&#xff0c;Efuse运行时候的电流 tNOM 代表的是&#xff0c;Efuse电流与时间的曲线 INOM通过VOC_Thrs设置 VOC_THRS VOC_THRS/Rsense Vsense采样小于VOC_THRS时候不动作 Vsense采样大于VOC_THRS时候根据Efuse_I2T曲线来…

SpringBoot之请求映射原理

前言 我们发出的请求&#xff0c;SpringMVC是如何精准定位到那个Controller以及具体方法&#xff1f;其实这都是 HandlerMapping 发挥的作用&#xff0c;这篇博文我们以 RequestMappingHandlerMapping 为例并结合源码一步步进行分析。 定义HandlerMapping 默认 HandlerMappi…

数据结构的队列,链表,栈的基础操作

1&#xff1a;队列 #include <stdio.h>#include <stdlib.h>#include "./02队列.h"/** function: 创建一个空的队列* param [ in] * param [out] * return */Sequeue* xinduilie(){Sequeue* sq (Sequeue*)malloc(sizeof(Sequeue)); if(N…

Linux基础IO【II】真的很详细

目录 一.文件描述符 1.重新理解文件 1.推论 2.证明 2.理解文件描述符 1.文件描述符的分配规则 3.如何理解文件操作的本质&#xff1f; 4.输入重定向和输出重定向 1.原理 2.代码实现重定向 3.dup函数 ​编辑 4.命令行中实现重定向 二.关于缓冲区 1.现象 …

Ubuntu系统中网易云音乐编译安装

项目地址&#xff1a; netease-cloud-music-gtk: Linux 平台下基于 Rust GTK 开发的网易云音乐播放器 目录 1.README.md中按照步骤来 2.安装git 3.报错 sudo apt install cmake sudo apt-get install libdbus-1-dev sudo apt install dnf sudo dnf install gettext 继…

【Pytorch】一文向您详细介绍 torch.nn.DataParallel() 的作用和用法

【Pytorch】一文向您详细介绍 torch.nn.DataParallel() 的作用和用法 下滑查看解决方法 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高…

云原生Kubernetes系列项目实战-k8s集群+高可用负载均衡层+防火墙

一、Kubernetes 区域可采用 Kubeadm 方式进行安装&#xff1a; 名称主机部署服务master192.168.91.10docker、kubeadm、kubelet、kubectl、flannelnode01192.168.91.11docker、kubeadm、kubelet、kubectl、flannelnode02192.168.91.20docker、kubeadm、kubelet、kubectl、flan…

【Numpy】一文向您详细介绍 np.trunc()

【Numpy】一文向您详细介绍 np.trunc() 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&#xff0c;…

诊所管理系统免费软件哪个好一点?

不少诊所管理者&#xff0c;想要寻找一款适合自己诊所的免费诊所管理系统。市场上有多个选择&#xff0c;那么&#xff0c;哪个会好一点呢?在选择适合自己诊所的免费诊所管理系统时&#xff0c;考虑系统的易用性、功能全面性、技术支持以及未来可扩展性是非常重要的。下面&…

算法分析与设计期末考试复习GDPU

重点内容&#xff1a; 绪论&#xff1a; 简单的递推方程求解 1.19(1)(2) 、 教材例题 多个函数按照阶的大小排序 1.18 分治法&#xff1a; 分治法解决芯片测试问题 计算a^n的复杂度为logn的算法&#xff08;快速幂&#xff09; 分治法解决平面最近点对问…