XSCTF 联合招新赛(热身赛)WEB部分wp 1 EZphp详细讲解

1.头头是道

 

 

 直接查看网络得到flag

2.warm_up

 

 这里提示要用他的电脑才能打开,即本地打开这个网站即

X-Forward-For 为本地即127.0.0.1

 

 这里要通过jiaran BiliBili Home Page 

直接在hackerbar中再加上jiaran BiliBili Home Page

得到flag

3.EZphp

<?php
include 'flag.php';
extract($_GET);
if (isset($wsf)) {
    $xmm = trim(file_get_contents($zm));
    if ($xmm == $wsf) {
        if (!empty($xlq)) {
            $xw = trim(file_get_contents($fn));
            if ($xlq === $xw) {

                echo "<p>$flag</p>";
            } else {
                echo '<p>no no no </p>';
            }
        } else 'You cant do that!!';
    } else {
        echo 'hacker!!';
    }
} else {
    highlight_file(__FILE__);
}
?>

这里有两个知识点

第一个是extrace()函数的使用

extract($_GET);
if (isset($wsf)) {
    $xmm = trim(file_get_contents($zm));
    if ($xmm == $wsf) {

这里有4个函数

1.extrace ()

这里使用菜鸟对他的解释

extract() 函数从数组中将变量导入到当前的符号表。

该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。

该函数返回成功设置的变量数目

 我们可以看到extract 改变了原来变量$a 

2.trim

trim() 函数移除字符串两侧的空白字符或其他预定义字符。

在这里不重要

3.file_get_contents()

file_get_contents() 把整个文件读入一个字符串中。

该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能

4.isset

isset() 函数用于检测变量是否已设置并且非 NULL。

如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE。

若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。

到这我们明白了这里的4个函数的作用

这里关键是if ($xmm == $wsf) 只要我们构建$xmm=$wsf就可以了 而$xmm=$zm 即$wsf=$zm就可以了

这里使用?wsf=&zm= ;$wsf= 代表wsf为空&联合执行 zm= 代表zm=空

现在我们绕过第二部分的代码

if (!empty($xlq)) {
            $xw = trim(file_get_contents($fn)); 
            if ($xlq === $xw) {	

                echo "<p>$flag</p>";

这里empty函数代表

empty() 函数用于检查一个变量是否为空。

empty() 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告

这里这道题目的考点是file_get_contents()函数绕过
绕过方法:
使用php://input伪协议绕过
1、将要GET的参数?xxx=php://input
用post方法传入想要file_get_contents()函数返回的值
2、用data://伪协议绕过
将url改为:?xxx=data://text/plain;base64,想要file_get_contents()函数返回的值的base64编码
或者将url改为:?xxx=data:text/plain,(url编码的内容)
这里我们使用第一种伪协议绕过

php://input的使用方法

$data = file_get_contents("php://input");

在这里fn通过php://input的方法来传递参数即$xw等于用post方法传入想要file_get_contents()函数返回的值

 所以我们用post给fn变量设置为fn=1

通过要通过slq=xw 即slq=fn=1代表slq变量的值为fn=1与通过伪协议传递的fn的值为fn=1相同

 在这里也不一定要为fn因为是值所以可以顺便填写

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许允er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值