zoukankan      html  css  js  c++  java
  • Web刷题之旅(三)

    mfw

    没看出是什么题,就先githack一下,爆出git源码,有个flag.php,但是空的

    看了一圈,index.php里面倒是有内容

    assert 判断一个表达式是否成立。返回true or false;

    strpos(string,find,start) 函数查找字符串在另一字符串中第一次出现的位置

     

    代码审计一下,没有可以着手的地方(关键不知道考点是什么)

    查WP,考点是命令执行漏洞:

    bool assert(mixed $assertion[,string $description]),如果assertion是字符串,他会被assert()当做php代码执行。 思路是通过可控变量file传入恶意参数,构造闭合 file_exists(),使assert()执行恶意代码

    构造file语句,当page=abc时返回的结果为false和false很恒成立,就是true了,用or连接

    可以执行system函数,后面再跟上“.php”

    ?page=abc') or system(phpinfo());//".php"

    ?page=abc') or system("cat templates/flag.php");//".php"

    用cat命令打开flag.php文件,最后查看源代码,得到flag

    其中//是用来注释掉后面内容的,涨姿势了

    web2

    题目代码:

    <?php
    $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

    function encode($str){
        $_o=strrev($str);
        // echo $_o;
            
        for($_0=0;$_0<strlen($_o);$_0++){
           
            $_c=substr($_o,$_0,1);
            $__=ord($_c)+1;
            $_c=chr($__);
            $_=$_.$_c;   
        } 
        return str_rot13(strrev(base64_encode($_)));
    }

    highlight_file(__FILE__);
    /*
       逆向加密算法,解密$miwen就是flag
    */
    ?> 

    strrev() 函数反转字符串,例:I LOVE U,反转以后变成U EVOL I

    substr(a,b,c)函数返回字符串a下标从b开始,到c结束的子串(不包含c)

    ord() 函数返回字符串的首个字符的 ASCII 值

    chr() 函数从指定的 ASCII 值返回字符

    str_rot13() 函数对字符串执行 ROT13 编码

    总结:看似是个web题,其实是crypto

    简单解一下,结束for循环以后得到的是:~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg

    但问题是,这里的数字,比如88到底是8还是88,还有函数

    $_c=substr($_o,$_0,1);

    当$_0超过了1,还能截取子串吗,那么又是怎么截取的?

    其实没有解释全,有点问题:

    第三个参数,其实是长度,编译器里面也标注出来了

    最后交给脚本:

    <?php
    $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
    function decode($miwen){
    $_o=base64_decode(strrev(str_rot13($miwen)));
    //echo $_o;
    for($_0=0;$_0<strlen($_o);$_0++)
    {
    $_c=substr($_o,$_0,1);
    $__=ord($_c)-1;
    $_c=chr($__);
    $_.= $_c;
    }
    return strrev($_);

    }
    echo decode($miwen);
    ?>

    逆向思维编代码(不是我的强项),按加密原理,进行解密,乍一看其实不难

    [Sign]做不出ctf题的时候很痛苦,你只能眼睁睁看着其他人领先你
  • 相关阅读:
    HDU 1269 迷宫城堡
    HDU 4771 Stealing Harry Potter's Precious
    HDU 4772 Zhuge Liang's Password
    HDU 1690 Bus System
    HDU 2112 HDU Today
    HDU 1385 Minimum Transport Cost
    HDU 1596 find the safest road
    HDU 2680 Choose the best route
    HDU 2066 一个人的旅行
    AssetBundle管理机制(下)
  • 原文地址:https://www.cnblogs.com/echoDetected/p/12928754.html
Copyright © 2011-2022 走看看