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

    [ACTF2020 新生赛]BackupFile

    网页让我们:Try to find out source file!

    御剑和uniscan扫不出后台目录,无奈只好拿出扫到让运营两行泪的dirsearch

    绿色显示正常访问网页,存在网站备份,下载读取源码:

    <?php
    include_once "flag.php";
    
    if(isset($_GET['key'])) {
        $key = $_GET['key'];
        if(!is_numeric($key)) {
            exit("Just num!");
        }
        $key = intval($key);
        $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
        if($key == $str) {
            echo $flag;
        }
    }
    else {
        echo "Try to find out source file!";
    }

    原来是PHP弱类型转换,就是说int类型传入1a,遇到字符就会停止读取,相当于传入的是1

    key和str比较,str必然是要类型转换成int,只取123,题目就出来了

    [BJDCTF2020]Easy MD5

    以为只是简单的碰撞,试了没有结果,然而hint在数据包头里

    知识盲区,查WP:

    md5函数在指定了true的时候,是返回的原始 16 字符二进制格式。也就是说会返回这样子的字符串:'or’6xc9]x99xe9!r,xf9xedbx1c(抄的= =)
             然后就会拼接成:
    (题目的提示感觉还是有点问题的,因为md5函数返回的是字符串,后端应该会用单引号/双引号包起来的),所以应该会拼接为这样子:

    select * from 'admin' where password=''or'6.......'

    就是说

    Payload:ffifdyop,上面的’ffifdyop‘字符串对应的16位原始二进制的字符串就是”    'or'6xc9]x99xe9!r,xf9xedbx1c    “  。  '    '后面的3个字符连同'    '算一个字符,比如’    xc9    ‘,所以上述一共16个。当然,像’    xc9    ‘这种字符会显示乱码

    拿去传参

    继续绕过,即传两个md5值都是0e开头的字符串,或者a[]和b[]数组也能绕过,md5返回的都是NULL

    最后再POST一次

    [Sign]做不出ctf题的时候很痛苦,你只能眼睁睁看着其他人领先你
  • 相关阅读:
    用户场景描述
    构建之法阅读笔记03
    冲刺记录(4.26)
    力扣-dp基础问题思维构建
    力扣-二叉树专题
    力扣-巧妙哈希
    力扣-双指针问题
    力扣-区间问题
    力扣-单调栈与单调队列问题
    力扣-股票买卖专题
  • 原文地址:https://www.cnblogs.com/echoDetected/p/12913180.html
Copyright © 2011-2022 走看看