攻防世界-php伪协议和文件包含

fileinclude

可以看到正常回显里面显示lan参数有cookie值表示为language

然后进行一个判断,如果参数不是等于英语,就加上.php,那我们就可以在前面进行注入一个参数,即flag,

payload:COOKIE:language=flag

发现还是无回显到flag.php里

可能存在的文件读取限制或过滤机制

利用 php://filter 和 language Cookie 组合,通过指定convert.base64 - encode,可以将读取到的文件内容进行 Base64 编码

Payload:Cookie: language=php://filter/convert.base64-encode/resource=flag

缘由:因为服务器可能只检查直接的文件路径访问,而没有考虑到经过编码转换的情况。

得到回显值为PD9waHANCiRmbGFnPSJjeWJlcnBlYWNlezhmYzdhY2U0MzE0OTg3Mjk0ZWZiMTFmMDM4ZDM0MTM3fSI7DQo/Pg==

解码可得

file_include

<?php highlight_file(FILE); include("./check.php"); if(isset(_GET\['filename'\])){ filename = _GET\['filename'\]; include(filename); } ?>

当使用 convert.iconv.UTF - 8.UCS - 2 过滤器时,文件内容的编码被改变,原本在 UTF - 8 编码下能被识别的危险字符或模式,在 UCS - 2 编码下可能就无法被识别,从而绕过了服务器的过滤机制。

Payload:?filename=php://filter/convert.iconv.UTF-8.UCS-2/resource=flag.php

check.php的内容为:
<?php if(_GET\["filename"\]){ preg_match_username = 'return preg_match("/base|be|encode|print|zlib|quoted|write|rot13|read|string/i", _GET\["filename"\]);'; if (eval(preg_match_username)) { die("do not hack!"); } } ## 题目名称-文件包含 通过一开始的测试,我们可以发现显示我们有正常的过滤器,但是参数不对,那我们就开始进行模糊测试,对常见字符进行编码转换,发现还是不对,再对编码格式进行测试,先去搜索php支持的编码格式字典 放到爆破里去进行爆破,解出 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b03822c711ea4ad5a03b820452528d6d.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/96c8fc1564f5467c9979c23475c08e6c.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1f1a36dfb262403d9018e246ac3aeee7.png) Payload:?filename=php://filter/convert.iconv.BIG-5*.UCS-4*/resource=flag.php 解出该flag ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7c57418836f64f1290b63ccf9b5b690d.png) ## PHP2 参考网上大佬的资料发现,这里要用到index.phps来查看php的源代码(没用的只是又增加了) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b306fd01b6b3457a8b39a89e79785b3f.png) 代码审计发现他要求id=admin的编码,所以我们进行编码后发现还是显示错误,后面发现经过一次编码,浏览器会自动进行一次解码环节,所以我们要进行二次编码才可以,得出flag ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d00c4ed2f274437cb8fe8be289c761ee.png)

相关推荐
唐装鼠4 分钟前
rust自动调用Deref(deepseek)
开发语言·算法·rust
Lucas5555555520 分钟前
现代C++四十不惑:AI时代系统软件的基石与新征程
开发语言·c++·人工智能
源代码•宸21 分钟前
goframe框架签到系统项目(BITFIELD 命令详解、Redis Key 设计、goframe 框架教程、安装MySQL)
开发语言·数据库·经验分享·redis·后端·mysql·golang
若尘啊若辰30 分钟前
安全通用要求之六安全管理制度
安全·网络安全·等保·等级保护·安全通用要求
吃喝不愁霸王餐APP开发者37 分钟前
Java后端系统对接第三方外卖API时的幂等性设计与重试策略实践
java·开发语言
写代码的【黑咖啡】42 分钟前
深入理解 Python 中的模块(Module)
开发语言·python
wuk9981 小时前
matlab为地图进行四色着色
开发语言·matlab
_MyFavorite_1 小时前
cl报错+安装 Microsoft Visual C++ Build Tools
开发语言·c++·microsoft
charlie1145141911 小时前
现代嵌入式C++教程:C++98——从C向C++的演化(2)
c语言·开发语言·c++·学习·嵌入式·教程·现代c++
zmzb01031 小时前
C++课后习题训练记录Day55
开发语言·c++