• 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题的时候很痛苦,你只能眼睁睁看着其他人领先你
  • 相关阅读:
    自定义控件省市区:仿苹果级联菜单
    【数据存储】SQLite数据库存储(10) 操作通讯记录的ContentProvider
    js跨域的理解与实现
    HTML5学习笔记
    [置顶] 高效前端优化工具Fiddler入门教程
    iis7.0 cpu 限制
    centos下安装apache + subversion(转)
    PHP页面控制访问
    [置顶] 高性能建站之前端优化篇
    [置顶] 构架高性能WEB网站的几点知识
  • 原文地址:https://www.cnblogs.com/echoDetected/p/12928754.html
Copyright © 2020-2023  润新知