• IDF---CTF----天罗地网


      

    不难不易的js加密

      解题地址:here

      过程:打开源码页面,开始分析js代码

                

      可以看到好多>.<    而且乱七八糟的感觉(好吧,大神就忽略这句吧)

      首先将网站另存为到本地,其实网上有关于这方面解码的方法,这里我使用的document.write(blablablabla.....) ,改完之后在本地打开文件,就不贴图了,将页面上的代码复制下来替换原来的js代码,调整一下格式,得到如图结果:

        

    <script type="text/javascript">
    var a=prompt("u8f93u5165u4f60u7684x66x6cx61x67u5427uff0cu5c11u5e74uff01","");
    var b="x66x33x33x37x33x65x33x36x63x36x37x37x37x35x30x37x37x39x66x35x64x30x34x66x66x37x38x38x35x62x33x65";
    var c=/.+_.+_.+/gi;//  g匹配所有  i对大小写不敏感
    var d=0x0;
    var e=a.substr(0x8,0x5);//
    //d = 0
    if($.md5(e)==b.replace(/7/ig,++d).replace(/8/ig,d*0x2)){// 8-12  jiami
        //d = 1
        
        var f=a.substr(0x0/d,0x7);
        if(f.substr(0x5,0x2)=="x6ax73"&&$.md5(f.substr(0x0/d,d+0x3))=="x64x30x31x35x34x64x35x30x34x38x62x35x61x35x65x62x31x30x65x66x31x36x34x36x34x30x30x37x31x39x66x31"){//5-6js 0-3wctf
            //d = 1
            document.write("2:"+d+"
    ");
            document.write("a:"+a+"
    ");
            r=a.substr(0xd);//Oxd=>13
            //0xd = 1
            document.write("rr:"+r+"
    ");
           // d = 0x1;
            if(r.charCodeAt(d)-0x19==r.charCodeAt(++d)-0x19&&r.charCodeAt(--d)-0x19==r.charCodeAt(--d)){//charCodeAt() 返回指定位置的unicode值
                //d = 3
                document.write("3:"+d+"
    ");
                var g=String.fromCharCode(0x4f);
                g=g.toLowerCase()+g.toLowerCase();//g =>oo
                document.write(r.substr((++d)*0x3,0x6)==g.concat("x65x61x73x79")+" ");
                //document.write("g:"+g.concat("x65x61x73x79")+"
    ");
                document.write(c.test(a));
                if(c.test(a)){//easy
                    document.write("4:"+d+"
    ");
                    d=String(0x1)+String(a.length);
                    document.write("5:"+d+"
    ");
                }
            }
        }
    };
    if(a.substr(0x4,0x1)!=String.fromCharCode(d)||a.substr(0x4,0x1)=="x7a"){
        alert("u989duff0cu518du53bbu60f3u60f3u3002u3002")
    }else{
        alert("u606du559cu606du559cuff01")
    }
    
    </script>
    View Code

      好吧,接下来分析代码==>ok   wctf{js_jiami_xxooeasy}

    COOKIE欺骗

      这道题目花了好几天(技术太渣T^T)

        

      解题地址:here

      过程:

        面对页面一大串的乱码,第一反应就是去解码,结果大概都知道了...

        查看url   /index.php?line=&file=ZmxhZy50eHQ

        传了2个值,其中file参数值有点加密的感觉,那就再来吧!通常url用的是base64加密,所以解之,附上在线解密网站:here

        解出来该值为flag.txt,好吧看样子该目录下应该还有其他的文件等着我们来访问,那就随便试试几个常用的文件名吧,最后试出来是index.php的base64密文aW5kZXgucGhw,接下来就是使用line这个参数了,随便改了改1,2,3,4,5..... 我们可以发现页面有php代码出现,好吧,那就写个脚本来拿这个文件吧

    import urllib
    
    url1 = "http://ctf.idf.cn/game/web/40/index.php?line="
    url2 = "&file=aW5kZXgucGhw"
    
    result = ""
    
    for i in range(200):
        url = url1 + str(i) + url2
        #print url
        wp = urllib.urlopen(url)
        content = wp.read()
        print content
        result += content
    
    print result
    View Code

    得到该php文件后,分析,cookie中如果有key并且对应idf,则加入flag.php   base64加密后放入url,cookie中加入key:idf   ok    wctf{idf_c00kie}

    <?php
    
    
        error_reporting(0);
    
    
        $file=base64_decode(isset($_GET['file'])?$_GET['file']:"");
    
    
        $line=isset($_GET['line'])?intval($_GET['line']):0;
    
    
        if($file=='') header("location:index.php?line=&file=ZmxhZy50eHQ");
    
    
        $file_list = array(
    
    
            '0' =>'flag.txt', 
    
    
            '1' =>'index.php',
    
    
        );
    
    
    
    
    
        if(isset($_COOKIE['key']) && $_COOKIE['key']=='idf'){
    
    
            $file_list[2]='flag.php';
    
    
        }
    
    
    
    
    
        if(in_array($file, $file_list)){
    
    
            $fa = file($file);
    
    
            echo $fa[$line];
    
    
        }
    
    
    ?>
    View Code

    古老的邮件编码

      uuencode编码,随便找个网站解一下   

    超简单的js题

      纯粹的解码

    简单的js解密

      解题地址:here

      查看js源码,源码有提示返回字符的ascii值

    if ('ENCRYPT' == method) {
        // Variable for output string
        var output = '';
        // Algorithm to encrypt
        for (var x = 0, y = string.length, charCode, hexCode; x < y; ++x) {
          charCode = string.charCodeAt(x);//
          if (charCode < 128) {
            charCode += 128;
          } else if (charCode > 127) {
            charCode -= 128;
          }
          charCode = 255 - charCode;
          hexCode = charCode.toString(16);
          if (hexCode.length < 2) {
            hexCode = '0' + hexCode;
          }
          
          output += hexCode;
        }
        // Return output
        return output;
      } else if ('DECRYPT' == method) {
        // DECODE MISS
        // Return ASCII value of character
         return string;
      }

    解密过程为加密过程的逆过程,首先我们将字符串2个一组来处理,当做hex值转化为acsii值,由于加密过程对acsii值小于128的加了128,所以解密过程要将128减去(还有一个是大于127减128的处理,但是因为密文没有超过128的,所以我没有在解密代码中对该步骤进行逆转化)

    解密代码:

    var charCode = "";
        var hexCode = 0;
        var output = "";
        for(var i=0;i<string.length;i+=2){
            if(string[i] == '0'){
                charCode = string[i+1];
            }
            else {
                charCode = string[i]+""+string[i+1];
            }
            
            hexCode = parseInt(charCode,16);
        
            output += String.fromCharCode(255-hexCode-128);
        }
        // Return output
        return output;
    View Code

     在页面上输出得到一串MD5值:b0bef4c9a6e50d43880191492d4fc827

     再次打开原来的网页,提交该字符串,得到key   wctf{jS_decRypt__Eaaasy}

    一种编码而已

      复制贴到控制台,答案就出来了,可以查查  jsfuck

     

  • 相关阅读:
    持续集成 自动化构建、测试、部署您的Coding代码
    MySQL主从 常见的错误及解决方案
    老王带你走过 Kafka 入门教程
    Spring Cloud Eureka 常用配置及说明
    关于智慧大数据中心平台建设思路
    工作经验是积累总结出来的
    程序员晋级CTO之路的8大准则
    Spring Cloud Feign 使用方法与性能优化
    Elasticsearch(ES)API 增删查改常用操作
    ELK 日志采集 实战教程
  • 原文地址:https://www.cnblogs.com/webFuckeeeer/p/ctfweb.html
Copyright © 2020-2023  润新知