在上面的例子中,index.php文件使用include语句包含了include.php文件,并调用其中定义的add函数,实现了代码的复用。 文件包含漏洞及伪协议Payload 文件包含漏洞(Local File Inclusion,LFI)是一种常见的 web 应用程序漏洞,攻击者利用该漏洞可以读取本地服务器上的敏感文件,或执行任意代码,从而实现对系统的控制。
{include($file1); } }elsedie("NONONO"); } 需要传入两个参数file1与file2,其中要保证file2参数中的文件内容是hello ctf,传法是:file2=data://text/plain,hello ctf,直接传hello ctf是不行的, file1就用来读取flag.php文件,传法是:?file1=php://filter/convert.base64-encode/resource...
参考了这篇文章:php伪协议实现命令执行的七种姿势,并根据自己理解进行了总结,也算是加深一下印象,方便以后使用。 file:// 协议 条件: allow_url_fopen:off/on allow_url_include :off/on 作用:用于访问本地文件系统,在CTF中通常用来读取本地文件的且不受allow_url_fopen与allow_url_include的影响。include()...
第三个if语句说的是file_get_contents() 函数包含file2变量,当满足file2的值等于hello ctf以及值的类型两者相同(类型是字符串),才会执行包含在include函数中的file1变量。(所以说这里咱们需要用到php://input绕过) 当这三个条件都不满足就会输出NONONO这个字符串。(显然可见这是不可能的) 二、 解题思路: 解题关...
为了方便数据存储,php通常会将数组等数据转换为序列化形式存储,那么什么是序列化呢?序列化其实就是将数据转化成一种可逆的数据结构,自然,逆向的过程就叫做反序列化。 网上有一个形象的例子,这个例子会让我们深刻的记住序列化的目的是方便数据的传输和存储。而在PHP中,序列化和反序列化一般用做缓存,比如session缓存,...
考点一:PHP变量名由数字字母下划线组成,是没有.的 我从大佬的文章了解到,GET或POST方式传进去的变量名,会自动将空格 + . [转换为_。例题:<?phperror_reporting(0);highlight_file(__FILE__);include("flag.php");$a=$_SERVER['argv'];$c=$_POST['fun'];if(isset($_POST['CTF_SHOW'])&&...
考点一:PHP比较运算符 ===在进行比较的时候,会先判断两种字符串的类型是否相等,再比较值是否相等。考点二:intval($value,$base)当base为0时,会检测value的格式来决定使用的进制。例题:include("flag.php");highlight_file(__FILE__);if(isset($_GET['num'])){ $num = $_GET['num']; i...
show_source(__FILE__); ?> 观察代码,发现主要获取的用户输入的IP参数,然后进行ping命令操作。 而且其中过滤很多管道符,不过依然可以使用%0als进行绕过。 payload: ?ip=127.0.0.1%0als 可以查看到flag.php位置,在使用cat命令读取flag.php文件内容。payload: ...
自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。一般需要用到base64编码传输 示例: http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b ...
1.include()等函数通过动态变量方式引入需要包含的文件 2.用户可控制该动态变量 本地文件包含(LFI) <?php$file=$_GET['file'];include$file;?> 若在同目录下有phpinfo.txt<? phpinfo; ?>则访问: index.php?file=phpinfo.txt 即可解析文件内容