fileinclude_file_include,2024年最新网络安全大厂面试题来袭

代码审计

  • 首先,通过if( !ini_get(‘display_errors’) )判断当前PHP环境是否已设置display_errors配置参数。如果没有设置,则通过ini_set(‘display_errors’, ‘On’)设置为打开错误显示功能。

  • 使用error_reporting(E_ALL)设置错误报告级别为显示所有错误。

  • 然后,从 _ C O O K I E 数组中获取名为 l a n g u a g e 的值,并将其赋值给 \_COOKIE数组中获取名为language的值,并将其赋值给 _COOKIE数组中获取名为language的值,并将其赋值给lan变量。

  • 如果$lan不存在或为空,使用setcookie函数设置一个名为language的cookie,值为"english",并包含"english.php"文件。

  • 如果$lan有值,根据该值包含相应的语言文件。

  • 使用file_get_contents函数获取名为index.php的文件的内容,并将其赋值给变量$x。

  • 最后,使用echo语句将变量$x的内容输出。

分析到这里方法就明确了,通过cookie传入文件包含的payload,就会执行

display_errors

display_errors是PHP配置选项之一,用于控制是否在页面上显示错误信息。

当display_errors配置参数被设置为On时,PHP会在页面上显示运行时错误信息。这对于开发和调试阶段非常有用,可以实时查看代码中的错误,并及时进行修复。

当display_errors配置参数被设置为Off时(或者未设置),PHP将禁止在页面上显示错误信息。这在生产环境中是一种常见的配置,以防止敏感信息暴露给用户或潜在的安全风险。

解题步骤

首先我们通过burp抓包,修改cookie值传入payload,这里尝试传入filter伪协议读取源码

发现可以读取,抓包后是没有Cookie字段的,记得插入Cookie的位置不要处于数据包最后,反正我会请求超时

解密后直接获得了flag

fileclude

代码审计

依旧很简单的哦

<?php include("flag.php"); highlight_file(__FILE__); if(isset($_GET["file1"]) && isset($_GET["file2"])) { $file1 = $_GET["file1"]; $file2 = $_GET["file2"]; if(!empty($file1) && !empty($file2)) { if(file_get_contents($file2) === "hello ctf") { include($file1); } } else die("NONONO"); } * 首先包含flag文件 * 然后检测GET传参的file和fil2是否存在 * 如果存在就分别对变量进行赋值 * 如果变量都不为空,并且打开file2后的值等于hello ctf,就包含file1 ![](https://img-blog.csdnimg.cn/img_convert/29b65c87098445f1b90b342332335b09.png) 直接这样构造file2,触发报错说没有找到目录或文件,有点傻的 突然想要file\_get\_contents函数是打开文件读取的,所以我们这里需要利用php的data伪协议写入数据 ![](https://img-blog.csdnimg.cn/img_convert/cc4245adcd9c43b4b325cb1e8f7fea3a.png) 不行,虽然没有报错,但是没有回显数据,我语句没错吧 那就使用input方法写入文件吧 也不行,无语了没有报错说明其实写入了呀,为啥读不出来,检查了很多遍filter命令也没错 ![](https://img-blog.csdnimg.cn/img_convert/fd587b5d58204b33860548a9d0ebe468.png) 最后是因为,第一次传参的时候加了引号闭合,导致传入不成功 ?file1=php://filter/convert.base64-encode/resource=flag.php&file2=data://text//plain,hello ctf ![](https://img-blog.csdnimg.cn/img_convert/92f0bee006f242b6858760ff4c465447.png) 解码后获得flag ![](https://img-blog.csdnimg.cn/img_convert/a2ed7f280d60484596b3be365b6de3bf.png) ## file\_include 打开环境是一串源代码,这个题看着就可以直接利用filter伪协议进行查看check.php的数据 <?php highlight_file(__FILE__); include("./check.php"); if(isset($_GET['filename'])){ $filename = $_GET['filename']; include($filename); } ?>

本来以为都做完了,结果给我来个报错回显

看来有过滤,因为我没有对应字典,所以我是一段一段测试的

最终测试下来对read、base、encode等其他没测出来的字符进行了过滤

起码从先在看来传统的filter伪协议是不能使用了

在查看wp的时候得知了filter方法有两种在这可用的转换器:string和我们这里的convert

官方解释

可惜string也被过滤掉了,所以我们可以使用convert

convert转换过滤器

主要含有三类,分别是base64的编码转换、quoted-printable的编码转换以及iconv字符编码的转换。该类过滤器以convert开头。

我们这里可以使用iconv方式(方式的含义是:将一个字符编码转换为另外一个字符编码)

语法:

convert.iconv..

或者

convert.iconv./

以下的copy的字符,原文链接

该 PHP 扩展支持的字符编码有以下几种:

UCS-4*

UCS-4BE

UCS-4LE*

UCS-2

UCS-2BE

UCS-2LE

UTF-32*

UTF-32BE*

UTF-32LE*

UTF-16*

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

学习路线:

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
在这里插入图片描述

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值