【网络安全】upload-labs Pass-04 解题详析

upload-labs关卡4(黑名单点空格绕过或htaccess绕过)通关思路 小白回顾文件上传靶场第四关 阅读详情

读者可参考、订阅专栏:Upload-Labs靶场攻防实战

Antsword蚁剑

蚁剑工具的利用,操作可参考:

【网络安全】AntSword(蚁剑)实战解题详析(入门)

【网络安全】DVWA之File Upload—AntSword(蚁剑)攻击姿势及解题详析合集


姿势

后端逻辑代码:

在这里插入图片描述
分析源码可知,此时文件后缀名绕过已不可能

该题考察.htaccess绕过。

.htaccess(Hypertext Access)是一个用于配置Apache服务器行为的配置文件。它通常位于网站的根目录或特定目录中,并用来控制目录下的文件访问权限、重定向、错误处理、认证等方面的设置。

因此我们可以上传.htaccess文件,实现能够访问脚本文件、执行脚本即可

.htaccess内容为:

<FilesMatch "asdfg.jpg">
SetHandler application/x-httpd-php
</FilesMatch>

这段代码是使用.htaccess文件的FilesMatch指令来对特定的文件进行处理。

当服务器收到对"asdfg.jpg"文件的请求时,根据该指令,服务器会将其当作PHP脚本来处理,而不是直接将其作为静态图片返回给用户。

接着我们构造asdfg.jpg:

在这里插入图片描述

上传.htaccess文件:

在这里插入图片描述

接着上传脚本文件:

在这里插入图片描述

输入文件上传路径,http://localhost/upload-labs-master/upload/asdfg.jpg

即可成功执行脚本:

在这里插入图片描述

【upload-labs 第四关通关攻略】 upload-labs第四关 阅读详情

相关推荐

upload-labs 第四关-第九关闯关方法

upload-labs 第四关-第九关闯关方法

qq_62673514的博客 1343

upload-labs-04

一、前言 在本关中涉及到Apache服务器的一个配置文件.htaccess。该文件是Apache服务器下的一个配置文件,主要负责相关目录下的网页配置,在一个特定的文档目录中放置一个包含一个或多个指令的文件来对网页进行配置。 二、环境 靶场:upload-labs 三、思路 打开第四关,查看提示,发现被过滤了好多东西,但是没有过滤.htacces文件。 那么我们就可以先上传一个.htacces文件,修改配置,让服务器把指定的文件当做PHP文件来执行。 <FilesMatch ..

m0_51998814的博客 5840

国家基因组科学数据中心(NGDC)---组学原始数据如何上传GSA

在发表文章之前我们需要将测序的原始数据上传到一个公共库,并在文中提供accession number,实现数据的公开共享,这是国际惯例。以前我们上传数据时只能上传到美国国立生物技术信息中心(NCBI)、欧洲生物信息学研究所(EBI)、日本核酸数据库(DDBJ),现在中国科学院北京基因组研究所(国家生物信息中心)国家基因组科学数据中心 (CNCB-NGDC)—中国的 "NCBI" 已经建立并日渐完善。组学原始数据归档库(GSA)是组学原始数据汇交、存储、管理与共享系统,是国内首个被国际期刊认可的组学数据发布平

sisichen 1万+

UPLOAD labs 第四关

大意就是htaccess是apache服务中的一个配置文件 ,负责相关目录下的网页配置,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、,大概搜了一下,就是后缀我成了htaccess,但是内容还是可以被当作php执行的,这就好办多了。、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。这后缀限制的不是一般的多,初学者还是先按照系统给的思路练习最佳。作为一个铁废物,来百度一下。写入此命令,上传文件。

nayousa的博客 865

Python实战:3分钟搞定A股K线数据抓取(附东方财富/腾讯API完整代码)

本文为量化交易初学者提供了一份快速获取A股K线数据的实战指南。通过对比东方财富与腾讯财经两大免费API的优劣,并附上可直接运行的完整Python代码,帮助读者在3分钟内搭建起自己的数据抓取管道,为构建量化交易系统奠定坚实的数据基础。

weixin_29062255的博客 2910

解决UE5像素流三大痛点:鼠标锁定/双光标/自动播放(附app.js魔改指南)

本文针对UE5像素流服务在实际应用中常见的鼠标锁定、双光标和自动播放三大交互痛点,提供了深入的技术分析和解决方案。通过详细解析app.js源码,指导开发者如何修改控制方案、修复光标显示以及实现静音自动播放,旨在提升Pixel Streaming应用的用户体验与专业度。

weixin_28025327的博客 382

[网络安全]upload-labs Pass-07 解题详析

接着放包、复制文件上传路径、连接蚁剑即可。

等风来 5936

仿真每日一练 | Workbench如何在网格节点施加载荷

打开Workbench 2020 R2,在分析系统中双击静力分析工程项目,双击Geometry打开Design Modeler,在菜单栏的单位(Units)修改为毫米(Millimeter),在XY平面创建草图,在草图内绘制矩形并标注尺寸,拉伸长方体,如图1所示。:单个零部件,无连接关系,但需定义一个节点组件,如图5所示,选择Create Named Selection。对添加的节点组件施加Y方向50N的力,如图8所示。1-1-3.有限元系统模型构建。1-1-1.几何模型构建。1-1-2.材料定义。

ansysxuexizhe的博客 1236

【网络安全】upload-labs Pass-19 解题详析

本文介绍了如何通过修改myupload.php文件中的代码,利用图片码绕过文件上传限制,上传含有eval代码的GIF文件,并通过文件包含功能点实现命令执行。文章详细描述了上传过程、获取图片路径、利用文件包含功能点执行命令的步骤,并提供了POC示例。此外,文章还提到可以通过条件竞争的方式完成该任务,并提供了相关参考链接。读者可参考相关专栏和文章,进一步学习网络安全攻防实战技巧。

等风来 6171

基于Qwen3-14B大模型的智能UI自动化测试实践

UI自动化测试是软件工程中保障产品质量的关键环节,其核心原理是通过脚本模拟用户操作,对软件界面进行功能验证。传统方法依赖于编写和维护基于元素定位的固定规则脚本,在面对复杂交互或频繁变化的界面时,维护成本高昂。大语言模型(LLM)的出现为这一领域带来了新的技术价值,其强大的自然语言理解和代码生成能力,使得测试脚本的编写从精确编码转向了任务描述。通过将大模型作为决策大脑,结合Playwright等自动化工具作为执行器,可以构建出能够理解界面、规划操作并验证结果的智能测试系统。这种方案特别适用于处理变化频繁、逻辑

weixin_42619742的博客 303

从二体运动到高精度轨道:STK与MATLAB联动的轨道外推算法演进史

本文探讨了轨道外推算法从二体运动到高精度轨道预报(HPOP)的演进历程,重点分析了STK与MATLAB协同仿真环境下的技术实现与应用。通过对比不同算法的精度与适用场景,展示了HPOP在卫星参数优化和轨道设计中的优势,为航天任务规划提供了高效解决方案。

weixin_29082143的博客 699

【网络安全】upload-labs Pass-18 解题详析

作用为:fopen(“info.php”, “w”) 使用写入模式(w)打开了一个名为 info.php 的文件,然后,fputs() 函数将 <?> 写入到打开的文件中。的原理类似,我们可以在上传文件的一瞬间访问该文件,这样文件就无法被过滤及二次渲染。但利用条件竞争时,需要快速进行访问,而手工较慢,因此需要写特定的脚本进行访问或上传。可以知道,后端逻辑代码先上传文件,再进行过滤及二次渲染。说明info.php成功生成,同时该文件包含一句话木马。在点击开始攻击的一瞬间,访问目标文件路径。

等风来 6220

Spring AI Alibaba实战训练营-16 NL2SQL (自然语言转 SQL)应用开发指南

本文介绍了一个基于AI的智能BI应用开发项目,主要实现自然语言转SQL(NL2SQL)功能,包含对话模块、MCP模块、向量数据管理模块。项目采用Spring AI Alibaba框架,集成通义千问大模型,支持内存向量库和AnalyticDB向量数据库两种存储方案。重点展示了chat模块的三个控制器实现:AnalyticNl2SqlController用于生产环境,SimpleChatController适用于开发测试,Nl2sqlForGraphController支持基于图的复杂对话流程。系统通过将业务知

program哲学 1586

【网络安全】upload-labs Pass-12 解题详析

00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串时,都是以\0(即0x00)作为字符串的结尾。操作系统在识别字符串时,当读取到\0字符时,就认为读取到了一个字符串的结束符号。:定义允许上传的文件扩展名数组,只允许上传 jpg、png 和 gif 文件。因此,我们可以通过修改数据包,插入\0字符的方式,达到字符串截断的目的。函数从最后一个点(.)之后截取字符串,即获取文件扩展名。:检查文件扩展名是否在允许上传的扩展名数组中。:从上传的文件名中提取文件扩展名。

等风来 5965

鸿蒙开发实战项目(四十七):图片编辑(ArkTS)

本篇Codelab主要介绍如何基于图片编解码,实现图片编辑。图片的解码。使用PixelMap进行图片编辑,如裁剪、旋转、亮度、透明度、饱和度等。图片的编码。

斌擎科技 1584

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

[网络安全]upload-labs Pass-05 解题详析

由代码审计可知,对于上传的文件名,先删除文件名末尾的点,然后首位去空,因此我们可构造。可知,不能使用Pass-04的解题方法进行.htaccess文件绕过。

等风来 5897

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【网络安全】upload-labs Pass-17 解题详析

由于二次渲染后图片中的部分数据会被修改,即(A,B,C)可能会被修改为(A,D,E),那么对于此限制,我们可以找到不被修改的。imagecreatefrompng是PHP中的一个函数,用于创建一个新的图像资源对象,并从PNG格式的图像文件中读取数据。,因为它不被过滤,因此我们将A修改为注入语句,此时语句不会被过滤,从而达到命令执行的目的。可以看到自00000190后,数据被二次渲染,也就是说在该行之前的数据是不会被渲染的。

等风来 6937

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【网络安全】upload-labs Pass-16 解题详析

本文介绍了如何利用Antsword蚁剑工具进行文件上传漏洞的攻防实战。文章首先提供了相关的参考链接,详细讲解了蚁剑的使用方法和实战案例。接着,文章分析了后端逻辑代码,重点介绍了exif_imagetype()函数的使用,该函数通过读取图像的第一个字节来验证文件类型。文章提示需要通过开启php_exif模块来支持该函数,并建议使用图片码绕过文件类型验证。最后,文章引用了详细的解题分析链接,供读者进一步学习参考。

等风来 6010

【网络安全】upload-labs Pass-13 解题详析

该题同Pass-12考察00截断,但为POST传参型。该题同Pass-12考察00截断,但为POST传参型。之后即可进行shell操作,本文不再赘述。接着将%00进行URL编码。

等风来 6008

【网络安全】upload-labs Pass-15 解题详析

使用getimagesize()函数获取图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度,并将其取出的文件类型信息$info[2]与文件后缀白名单进行对比,判断上传的文件是否合法,并将info[2]作为上传后的文件的后缀名。其它操作同Pass-14,本文不再赘述。于是我们仍可以使用图片码上传。

等风来 5886

[网络安全]upload-labs Pass-08 解题详析

接着放包、复制文件上传路径、连接蚁剑即可。本文不再赘述。

等风来 5850

[网络安全]upload-labs Pass-02 解题详析

可使用Pass-01的方法。

等风来 5822

【网络安全】upload-labs Pass-03 解题详析

故可使用其它后缀名绕过,如php3、php4、phtml。代码审计可知普通的文件名被加入黑名单。

等风来 5984

[网络安全]upload-labs Pass-06 解题详析

由于PHPStudy中apache 2.4.39连接报错,可切换为nginx 1.15.11。本关并未使用strtolower函数对文件名进行大小写过滤,故可抓包进行大小写绕过。接着打开图片链接可得到文件上传URL。将.php改为.Php。

等风来 5947

【网络安全】upload-labs Pass-14 解题详析

可知其检测了文件头信息,此时仅抓包修改文件后缀名不可绕过。将1.php与1.png合并为shell.php即可。需写出文件所在路径及期望得到的文件路径。故文件包含、传参执行命令成功。成功得到shell.png。

等风来 6277

[网络安全]upload-labs Pass-10 解题详析

函数将文件扩展名中的字符串"::$DATA"替换为空,即去除该字符串。函数获取文件名中最后一个点(.)及其后面的部分,即文件的扩展名。这段代码是用于处理上传文件的文件名和文件扩展名。函数去除文件扩展名字符串首尾可能存在的空格。:从上传的文件中获取文件名,并使用。函数,将文件名末尾的点(.)删除。函数去除首尾可能存在的空格。函数将文件扩展名转换为小写。故上传的文件后缀名为。

等风来 5803
上一篇: 【网络安全】upload-labs Pass-03 解题详析
下一篇: [网络安全]upload-labs Pass-05 解题详析
秋说
秋说 优质创作者: 编程框架、信息安全技术领域 优质创作者: 编程框架、信息安全技术领域
博客等级 码龄4年 3万+粉丝 1906原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值