CTFHub技能树-Web-文件上传-00截断


如果你没有在 cnblog 作者为 carr0t2 中看到此文章,建议访问 原网页以获取更好的排版,图片体验

题目



下面是网页中的代码

if (!empty($_POST['submit'])) {
    $name = basename($_FILES['file']['name']);
    $info = pathinfo($name);
    $ext = $info['extension'];
    $whitelist = array("jpg", "png", "gif");
    if (in_array($ext, $whitelist)) {
        $des = $_GET['road'] . "/" . rand(10, 99) . date("YmdHis") . "." . $ext;
        if (move_uploaded_file($_FILES['file']['tmp_name'], $des)) {
            echo "<script>alert('上传成功')</script>";
        } else {
            echo "<script>alert('上传失败')</script>";
        }
    } else {
        echo "文件类型不匹配";
    }
}

思路

  • 搜索00截断内容
  • C语言中学过字符串的结尾会有00作为字符串结束的标志,这里同理,$des在连接的时候最前面连接的是$_GET['road'],而$_GET['road']这个参数又是我们可以编辑指定的,所以可以构造出00截断,这里涉及到URL编码内容
  • 推荐阅读
    https://zhuanlan.zhihu.com/p/27739315
    https://www.seebug.org/vuldb/ssvid-89630

工具

1.中国蚁剑
2.bp

解法

1、bp开代理,上传图片马并截获

2、构造00截断上传

3.中国蚁剑连接,获得flag

后记

自己目前还不太会php代码,所以就自己调试,发现这几个变量上传之后的情况

自己用电脑调试时候发现%00会被解析成\0,后来在上面知乎文中得到了解释

我们现在已经知道使用%00截断有两个条件php版本小于5.3.4和magic_quotes_gpc为off状态。 如果这时我们将magic_quotes_gpc改为on那么就不能截断了,因为开启magic_quotes_gpc后%00会被加上一个反斜杠转义掉

猜你喜欢

转载自www.cnblogs.com/carr0t/p/12622236.html