美文网首页Web安全
前女友(SKCTF)

前女友(SKCTF)

作者: 胖佳儿Clara | 来源:发表于2018-09-05 19:46 被阅读0次

    打开源代码,出现code.txt

    if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){
        $v1 = $_GET['v1'];
        $v2 = $_GET['v2'];
        $v3 = $_GET['v3'];
        if($v1 != $v2 && md5($v1) == md5($v2)){
            if(!strcmp($v3, $flag)){
                echo $flag;
            }
        }
    }
    ?>
    
    • isset()函数用于检测变量是否已设置并且非NULL.
    • strcmp() 函数比较两个字符串.
      如果两个字符串相等,返回0
      如果 string1 小于 string2,返回<0
      如果 string1 大于 string2,返回>0

    根据v1 !=v2 && md5(v1) == md5(v2):

    • 姿势1:v1,v2 找到两个开头为0的md5值,例如:v1=s878926199a&&v2=s155964671a
    • 姿势2:根据md5函数特性,用两个值不同但不可md5的数据类型,例如:
      v1[]=1&&v2[]=2

    根据 if(!strcmp(v3,flag))
    需要v3和flag值相同才返回flag的值。此处依旧利用函数特性,strcmp函数如果出错,其返回也是0,不可比较时出错,传入数组,例如:
    v3[]=8.

    综上,构造:
    ?v1=s878926199a&&v2=s155964671a&&v3[]=8
    可得到flag

    相关文章

      网友评论

        本文标题:前女友(SKCTF)

        本文链接:https://www.haomeiwen.com/subject/jsrzwftx.html