CTF - 텀 블 러. - WEB 의 비밀 을 찾 아 주세요.

15241 단어 '라 고 말한다.
                      **   -WEB        **

이 문제 에 대해 나 는 그래도 좀 깨 달 았 다.여러분 과 나 눠 보도 록 하 겠 습 니 다!!늘 그 렇 듯 이 홈 페이지 에 들 어가 소스 코드 를 벗기다.하지만 이번 에는 이것 이 좀 특이 해서 한꺼번에 구 할 수 있 는 것 이 아니 라 그 js 스 크 립 트 에 중점 을 두 었 습 니 다. 다음은 제 가 상세 하 게 설명 하 겠 습 니 다.
4. 567917. 절차 1: 전체 페이지 를 복사 하고 관찰 한 결과 이 js 스 크 립 트 는 정상 적 인 스 크 립 트 가 아니 라 는 것 을 알 수 있 습 니 다.사실 이것 은 암호 화 된 스 크 립 트 입 니 다. 복호화 코드 를 아래 에 붙 였 습 니 다

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS  title>
head>
<body>
    <script>   
    a=62;   
    function encode() 
    {   
     var code = document.getElementById('code').value;   
     code = code.replace(/[ ]+/g, '');   
     code = code.replace(/'/g, "\'");   
     var tmp = code.match(/(w+)/g);   
     tmp.sort();   
     var dict = [];   
     var i, t = '';   
     for(var i=0; iif(tmp[i] != t) dict.push(t = tmp[i]);   
     }   
     var len = dict.length;   
     var ch;   
     for(i=0; inew RegExp('\b'+dict[i]+'\b','g'), ch);   
     if(ch == dict[i]) dict[i] = '';   
     }   
     document.getElementById('code').value = "eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}("   
     + "'"+code+"',"+a+","+len+",'"+ dict.join('|')+"'.split('|'),0,{}))";   
    }  

    function num(c)
    {   
     return(c'':num(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36));   
}  
function run()
{   
eval(document.getElementById('code').value);   
}  
function decode()
{   
var code = document.getElementById('code').value;   
code2 = code.replace(/^eval/, '');   
//alert(code);  
document.getElementById('code').value = eval(code2);   
}   
script>  
<textarea id=code cols=80 rows=20> 
textarea>  
< input type = button onclick = encode () value = 인 코딩 >
< input type = button onclick = run () value = 실행 >
< input type = button onclick = decode () value = 디 코딩 >
body>
html>

2. 단계 2: txt 문 서 를 새로 만 들 고 아래 코드 를 복사 한 다음 html 로 형식 을 바 꿉 니 다.암호 화 된 js 코드 를 복사 합 니 다.메모: 코드 를 복사 할 때 첫 줄 에 빈 칸 을 남 겨 두 면 안 됩 니 다. 첫 줄 앞의 빈 칸 을 모두 없 애 는 뜻 입 니 다.안 그러면 복호화 가 안 돼.3. 단계 3: 복호화 한 후 에는 다음 과 같은 코드 가 있어 야 합 니 다.
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>simple js decodetitle>
head>
<body>
    <form id="levelQuest" method="post">
    <p>
        password:p>
    <p>
        <input id="password" class="input" name="password" type="password">
        <input class="button" value="Go" type="submit">
    p>
    form>
    <p id="errorMessage">
    p>
    <script>
        function pseudoHash(string, method)
         {
             if (!('ENCRYPT' == method || 'DECRYPT' == method)) 
            {
                method = 'ENCRYPT'
            }
            if ('ENCRYPT' == method) 
            {
                var output = '';
                for(var x = 0,y=string.length,charCode, hexCode; x < y; ++x)
                 {
                    charCode = string.charCodeAt(x);
                    if (128 > charCode) 
                    {
                        charCode += 128
                    }
                     else if (127 < charCode)
                     {
                        charCode -= 128
                     }
                    charCode = 255 - charCode;
                    hexCode = charCode.toString(16);
                    if (2 > hexCode.length) 
                    {
                        hexCode = '0' + hexCode
                    }
                    output += hexCode
                }
                return output
            } 
            else if('DECRYPT' == method)
             {
                return string
            }
        }
        document.getElementById('password').value = pseudoHash('1a4d494e4b47461e1d464b4d4b4d461e49494f4f1c4e1c4b4e4d4e1e1c4e4b1b', 'DECRYPT');
  script>
    <p id="tip">
    p>
body>
html>

아마 이런 코드 는 초보 자 들 에 게 는 좀 알 아 볼 수 없 을 것 이다.그래서 본인 은 특별히 그의 c \ # 코드 를 썼 습 니 다.
public string pseudoHash(string str, string method)  
    {  
        // Default method is encryption  
        if (!("ENCRYPT" == method || "DECRYPT" == method))  
        {  
            method = "ENCRYPT";  
        }  
        // Run algorithm with the right method  
        if ("ENCRYPT" == method)  
        {  
            // Variable for output string  
            string output = "";  
            // Algorithm to encrypt  
            char[] ch = str.ToCharArray();  
            char charCode;  
            string hexCode;  
            for (int x = 0, y = str.Length; x < y; ++x)  
            {  
                charCode = ch[x];  
                if (charCode < 128)  
                {  
                    charCode = (char)(charCode + 128);  
                }  
                else if (charCode > 127)  
                {  
                    charCode = (char)(charCode - 128);  
                }  
                charCode = (char)(255 - charCode);  
                hexCode = Convert.ToString(charCode,16);  
                if (hexCode.Length < 2)  
                {  
                    hexCode = '0' + hexCode;  
                }  
                output += hexCode;  
            }  
            // Return output  
            return output;  
        }  
        else if ("DECRYPT" == method)  
        {  
            return str;  
        }  
        return "";  
    }  
        ,        js  ,          ,   c#    :
    public string getIt(string str)  
    {  
        char[] ch = str.ToCharArray();  
        string s = "";  
        for(int i = 0; i < str.Length - 1; i+=2)  
        {  
            s += (char)(255-Convert.ToInt32(ch[i] + "" + ch[i + 1], 16)-128) + "";  
        }  
        return s;  
    }  

이것 은 스스로 그것 을 호출 하 는 방법 입 니 다. 해 제 된 문자열 은 "e261489Ab 942429a 6600 c1c 4121 ac14d" 입 니 다. 이것 은 32 비트 문자열 입 니 다. md5 로 복호화 해 보십시오.http://cmd5.com/풀다마지막 으로 문제 가 생 겼 습 니 다. 7415 를 채 워 서 시스템 에 답 이 틀 렸 습 니 다.어이, 마음 있 는 사람 이 도와 주세요. 어떻게 된 일 인지 알려 주세요!!처음 블 로 그 를 써 서 미흡 한 점 은 양해 해 주시 기 바 랍 니 다

좋은 웹페이지 즐겨찾기