打开题目环境,如下图所示:

    BugkuCTF-Web24-PHP是世界上最好的语言 - 图1

    点击该链接,获得源码如下:

    1. <?php
    2. if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){
    3. $v1 = $_GET['v1'];
    4. $v2 = $_GET['v2'];
    5. $v3 = $_GET['v3'];
    6. if($v1 != $v2 && md5($v1) == md5($v2)){
    7. if(!strcmp($v3, $flag)){
    8. echo $flag;
    9. }
    10. }
    11. }
    12. ?>

    根据源码含义,需要构造md5弱类型比较和strcmp的数组get漏洞。构造以下payload即可。

    BugkuCTF-Web24-PHP是世界上最好的语言 - 图2

    知识点:

    strcmp()在比较字符串和数组的时候直接返回0,这样通过把目标变量设置成数组就可以绕过该函数的限制。