[极客大挑战 2020]Roamphp2-Myblog

[极客大挑战 2020]Roamphp2-Myblog

源码

<?php
error_reporting(0);
session_start();
$logined = false;
if (isset($_POST['username']) and isset($_POST['password'])){
    if ($_POST['username'] === "Longlone" and $_POST['password'] == $_SESSION['password']){  // No one knows my password, including myself
        $logined = true;
        $_SESSION['status'] = $logined;
    }
}
if ($logined === false && !isset($_SESSION['status']) || $_SESSION['status'] !== true){
    echo "<script>alert('username or password not correct!');window.location.href='index.php?page=login';</script>";
    die();
}
if(isset($_FILES['Files']) and $_SESSION['status'] === true){
            $tmp_file = $_FILES['Files']['name'];
            $tmp_path = $_FILES['Files']['tmp_name'];
            if(($extension = pathinfo($tmp_file)['extension']) != ""){
                $allows = array('gif','jpeg','jpg','png');
                if(in_array($extension,$allows,true) and in_array($_FILES['Files']['type'],array_map(function($ext){return 'image/'.$ext;},$allows),true)){
                    $upload_name = sha1(md5(uniqid(microtime(true), true))).'.'.$extension;
                    move_uploaded_file($tmp_path,"assets/img/upload/".$upload_name);
                    echo "<script>alert('Update image -> assets/img/upload/${upload_name}') </script>";
                } else {
                    echo "<script>alert('Update illegal! Only allows like \'gif\', \'jpeg\', \'jpg\', \'png\' ') </script>";
                }
            }
        }
        ?>

解题步骤:

有个登录框,尝试注入,无果。但是url好像有点东西。于是用php伪协议尝试读取源码。

如果加了后缀php,什么都没有。根据上面page传参的规则,盲猜自动加入.php后缀。

所以直接去掉php后缀就能读取。

读了一些,有用的就上面这段,来自admin/user.php

$_POST['password'] == $_SESSION['password']需要绕过这个,抓包,发现phpsession,直接清空,然后密码清空,这样就能相等了。

登录之后,经典文件上传。在前面已经得知可以使用php伪协议。虽然末尾自动添加php后缀。

所以phar不能用了,因为绕不过末尾的php后缀。但是可以用zip伪协议

zip:// + zip路径 + %23 + php文件名
http://173.82.206.142:8006/?page=zip://./upload/6f49107b371dc2c26e97d8579ecf2c0979936271.jpg%231

这里不加.php后缀是因为在index.php包含的时候默认加上了

在本地写一个php马,然后打包成zip文件,改后缀为png。上传。

复制路径,在page进行zip伪协议

然后就能得到flag。

注意:如果在本地编写的php名为asd.php,而且把这个php文件压缩了,zip://./assets/img/upload/200bbd706272fd357d0dbee16f45529b0c210b22.png%23asd末尾就要为asd.php(本题自动添加后缀),而且,#必须为%23

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇