启动靶机

点击tips发现提示:Can you find the flag?

同时URL发生改变,这里说明网页会根据参数 file 来加载文件——
eg:
?file=flag.php
服务器内部的代码可能是:
include($_GET['file']);
这就是典型的文件包含漏洞入口。
一、BP抓包
抓包后没有发现隐藏信息:说明flag不在http数据里。
二、根据题目提示
1.根据题目提示include,结合url信息推测
推测:这是PHP文件包含漏洞(LFI)即:Local File Inclusion
服务器会把file参数的内容当作文件路径加载。
2.尝试input协议和filter协议
返回hacker!于是尝试filter协议,为了防止代码执行,使用base64编码读取源码:
?file=php://filter/convert.base64-encode/resource=flag.php

浏览器看到结果,再把结果进行解码得到flag:
总结
php://input :PHP 的一个 流协议
可以读取 POST 原始数据.POST提交PHP代码,然后include执行
eg:
POST:
<?php system('ls'); ?>如果成功:
服务器会执行代码。
php://filter 的作用:读取文件内容但不执行
核心漏洞:PHP 文件包含漏洞(LFI)
利用方式:php://filter + base64读取源码

433

被折叠的 条评论
为什么被折叠?



