Pikachu靶场通关教程

RCE(远程代码执行)

Ping

我们尝试写入一个IP地址,比如127.0.0.1(本机的回环地址)

接下来我们尝试和IP进行拼接查询语句,比如whoami,net user ,netstat -an 等等

这样九爆出了用户名,接下来我们看看源代码,以下是主要的一段代码

if(isset($_POST['submit']) && $_POST['ipaddress']!=null){
    $ip=$_POST['ipaddress'];
//     $check=explode('.', $ip);可以先拆分,然后校验数字以范围,第一位和第四位1-255,中间两位0-255
    if(stristr(php_uname('s'), 'windows')){//判断操作系统的是windows还是linux
//         var_dump(php_uname('s'));
        $result.=shell_exec('ping '.$ip);//直接将变量拼接进来,没做处理
    }else {
        $result.=shell_exec('ping -c 4 '.$ip);
    }

}

主要的问题是他没有对用户的输入进行任何的过滤,才会出现远程代码执行的漏洞

eval

看一下提示说后台执行eval函数,所以我们尝试执行php代码中的phpinfo函数

成功了,在这里小编提醒一下payload是下面这个,记得加分号因为eval里是执行的php代码

,php代码每一行结束都有分号

payload:phpinfo();

不理解php函数的看这个PHP代码审计-CSDN博客

PHP反序列化

让我们填写一个序列化之后的东西

<?php
class S{
    var $test = "pikachu";
    function __construct(){
        echo $this->test;
    }
}


//O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
$html='';
if(isset($_POST['o'])){
    $s = $_POST['o'];
    if(!@$unser = unserialize($s)){
        $html.="<p>大兄弟,来点劲爆点儿的!</p>";
    }
else{
        $html.="<p>{$unser->test}</p>";
    }

}
?>

这里可以直接去反序列化,下面是php构造序列化的代码

<?php

class S{
    var $test = "<script>alert('xss')</script>";

}
$a = new S();
$b = serialize($a);
echo $b;
?>

Unsafe Fileupload

client check

看一下提示,可以大概了解到大概是前端的绕过

我们看一下代码,我们可以看到是前端的js代码绕过,所以我们直接禁用js就ok了

<script>
    function checkFileExt(filename)
    {
        var flag = false; //状态
        var arr = ["jpg","png","gif"];
        //取出上传文件的扩展名
        var index = filename.lastIndexOf(".");
        var ext = filename.substr(index+1);
        //比较
        for(var i=0;i<arr.length;i++)
        {
            if(ext == arr[i])
            {
                flag = true; //一旦找到合适的,立即退出循环
                break;
            }
        }
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Smile灬凉城666

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

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

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

打赏作者

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

抵扣说明:

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

余额充值