2009-03-16 11 views
6

मैं इस कोड का टुकड़ा समझ में नहीं आता समझ में नहीं आता चर, और क्या यह यह करने के लिए निर्धारित कर रहा है:मैं इस संहिता

var hsta=0x0c0c0c0c,hbs=0x100000,pl=plc.length*2,sss=hbs-(pl+0x38); 
var ss=gss(addr(hsta),sss),hb=(hsta-hbs)/hbs; 
for(i=0;i<hb;i++)m[i]=ss+plc; 

मैं भी इस समारोह को समझ नहीं सकता:

function fb(){ 
    try { 
     var obj=null; 
     obj=cobj('{5C6698D9-7BE4-4122-8EC5-291D84DBD4A0}'); 
     if(obj){ 
      ms(); 
      var buf = addr(0x0c0c0c0c); 
      while (buf.length < 400) buf += buf; 
      buf = buf.substring(0,400); 
      obj.ExtractIptc = buf; 
      obj.ExtractExif = buf; 
      } 
     } catch(e){} 
    return 0; 
    } 

निम्नलिखित कोड का क्या अर्थ है?

cobj('{5C6698D9-7BE4-4122-8EC5-291D84DBD4A0}')

इस चर किस तरह का है?

var buf = addr(0x0c0c0c0c); 
buf = buf.substring(0,400); 
obj.ExtractIptc = buf; 
obj.ExtractExif = buf; 

सबसे महत्वपूर्ण बात, क्या है कि कोड करने का प्रयास कर टुकड़ा है?

function hex(num,width){ 
    var digits='ABCDEF'; 
    var hex=digits.substr(num&0xF,1); 
    while(num>0xF){ 
     num=num>>>4; 
     hex=digits.substr(num&0xF,1)+hex; 
     } 
    var width=(width?width:0); 
    while(hex.length<width)hex='0'+hex; 
    return hex; 
} 

function addr(addr){ 
    return unescape('%u'+hex(addr&0xFFFF,4)+'%u'+hex((addr>>16)&0xFFFF,4)); 
    } 

किसी भी मार्गदर्शन की सराहना की जाएगी:

यहां कुछ और कार्य हैं।

+0

यह सभी PHP नहीं है।वास्तव में, इसका एक छोटा सा माउंट PHP की तरह दिखता है। शेष जावास्क्रिप्ट की तरह दिखता है। इसके अलावा, कृपया अपने कोड को स्वरूपित करने का बेहतर काम करें - इसे पढ़ना लगभग असंभव है। –

+0

@ पीटर बेली: हाँ, मैंने इसे उसके लिए तय कर दिया। –

+0

मैंने आपके उत्तर को आपके लिए अधिक जानकारी के साथ संशोधित किया। –

उत्तर

26

यह एक जावास्क्रिप्ट फेसबुक से संबंधित एक सुरक्षा भेद्यता, अधिक रों का फायदा उठाने की कोशिश कर रहा टुकड़ा है। अपने छवि अपलोडर क्लाइंट साइड ActiveX नियंत्रण के लिए pecifically।

cobj भाग क्लास आईडी {5C6698D9-7BE4-4122-8EC5-291D84DBD4A0} का ऑब्जेक्ट बनाने का प्रयास करता है जो एक ActiveX फोटो अपलोडर नियंत्रण होता है। ExtractIptc और ExtractExif फ़ंक्शन उस विशिष्ट ActiveX नियंत्रण से संबंधित हैं।

कोड का मूल वास्तव में मेमोरी एड्रेस मैनिपुलेशन, स्थानांतरण, मास्क का उपयोग उच्च और निम्न बिट्स को अलग करने के लिए करता है। उदाहरण के लिए, hex((addr>>16)&0xFFFF,4)) एक पता लेता है, इसे 16 बिट्स दाएं स्थानांतरित करता है, निचले भाग को साफ़ करता है और इसे हेक्स नंबर में परिवर्तित करता है। वास्तव में इस कोड के अधिकांश को समझने के लिए, आपके पास सही डिबगिंग टूल होना चाहिए।

{5C6698D9-7BE4-4122-8EC5-291D84DBD4A0} ClassID Googling दिया कुछ रोचक परिणाम आप इस पर गौर करना चाहिए:

http://www.kb.cert.org/vuls/id/776931

http://seclists.org/fulldisclosure/2008/Feb/0023.html

http://securitytracker.com/alerts/2008/Feb/1019297.html

कृपया ध्यान दें, इस पीएचपी नहीं है। यह जावास्क्रिप्ट है।

अधिक जानकारी ...

cobj शायद एक CreateObject() कॉल में अनुवाद किया है। प्रत्येक पंजीकृत ActiveX नियंत्रण की अपनी कक्षा आईडी होती है, और उनके पास {0000000000-0000-0000-0000-000000000000} है। जब आप पंजीकृत लाइब्रेरी का संदर्भ लेना चाहते हैं, और इसका एक उदाहरण बनाते हैं, तो आप इसका नाम या उसकी कक्षा आईडी का उपयोग कर सकते हैं।

ActiveX नियंत्रण स्वयं आपके कंप्यूटर पर एक .OCX या .DLL फ़ाइल होना चाहिए। यदि आप यह फ़ाइल पा सकते हैं और इसे डीबग कर सकते हैं, तो आपको ExtractIptc और ExtractExif फ़ंक्शंस के बारे में सबसे विशिष्ट विवरण मिलेंगे। फिर, उन दो कार्यों में एक विशिष्ट तरीके से बुलाए जाने पर भेद्यताएं प्रतीत होती हैं, और यही वह स्क्रिप्ट है जिसका शोषण करने का प्रयास किया जा रहा है।

var hsta=0x0c0c0c0c भाग हेक्साडेसिमल संख्या 0c0c0c0c के बराबर एक परिवर्तनीय hsta परिभाषित करता है। यह var hsta = 202116108 लिखने जैसा ही है। कंप्यूटर इंजीनियरिंग में, दशमलव संख्याओं की तुलना में हेक्साडेसिमल पते से निपटना आसान है क्योंकि कंप्यूटर की मेमोरी के अंदर पते और डेटा बाइनरी है और सीधे हेक्स संख्या के रूप में प्रदर्शित किया जा सकता है। हेक्साडेसिमल के बारे में अधिक जानकारी: http://en.wikipedia.org/wiki/Hexadecimal

परिवर्तनीय नाम hsta हंगेरी नोटेशन में प्रतीत होता है (पहला अक्षर हेक्स के लिए चर प्रकार - एच का प्रतिनिधित्व करता है)। इसलिए मुझे लगता है कि इसका मतलब है हेक्साडेसिमल प्रारंभ पता (hsta)। विचार की एक ही ट्रेन के बाद, मेरा अनुमान होगा कि pl का अर्थ है पेलोड और plc का मतलब पेलोड कोड है।

पेलोड कोड वह कोड है जो शोषण सफल होने पर कंप्यूटर निष्पादित करेगा, और स्क्रिप्ट (\x43\x43\x43\x43\n....\xEF) की शुरुआत में आप यही देखते हैं। यह किसी विशेष CPU आर्किटेक्चर और ऑपरेटिंग सिस्टम के लिए shell code के रूप में एन्कोड किया गया है। इसका मतलब है कि कोड पहले से संकलित है, स्टैंडअलोन है, और सीपीयू को सीधे पाइप किया जा सकता है। यदि आप इसे डीकोड करते हैं, तो आपको शायद मशीन कोड के करीब कुछ मिल जाएगा। यह शायद कुछ भी सकारात्मक नहीं है।

hex(num,width) फ़ंक्शन एक दशमलव संख्या को उसके हेक्साडेसिमल रूप में परिवर्तित करता है। मैंने फ़ंक्शन को अलग से परीक्षण किया है, और इसे 1000 खिलाते समय 3E8 लौटा दिया। चौड़ाई चर का उपयोग स्क्रिप्ट से बाहर निकलने के लिए किया जाता है यदि परिणामस्वरूप हेक्साडेसिमल संख्या निर्दिष्ट से बड़ी है।

इस हिस्से के बारे में:

var buf = addr(0x0c0c0c0c); 
buf = buf.substring(0,400); 
obj.ExtractIptc = buf; 
obj.ExtractExif = buf; 

buf चर एक बफर है। एक बफर स्मृति में डेटा से ज्यादा कुछ नहीं है। इस कोड में दिखाए गए अनुसार इसे स्ट्रिंग के रूप में इंटरफेस किया जा सकता है। मेरा अनुमान है कि 400 बाइट्स का बफर 0x0c0c0c0c पर स्मृति में जो भी सामग्री है, से बना है और फिर दो कार्यों में खिलाया जाता है।

यहां कई फ़ंक्शन परिभाषाएं गायब हैं। अर्थात्, hav() फ़ंक्शन।

+1

मुझे लगता है कि हमारे ओपी के लिए एक प्रासंगिक सवाल है 'आपको यह कोड कहां मिला?' = एक्स –

+4

सही ... ठीक है आप देख सकते हैं कि उसका उपयोगकर्ता नाम निर्दोष नहीं है। –

+0

हे ... अच्छा बिंदु ... –

1

मैंने जितना संभव हो उतना स्वरूपण तय किया, लेकिन अभी भी कुछ हिस्सों में गायब होने लगते हैं। कम से कम, मैं सिंटैक्स त्रुटियों, अनियमित चर, आदि देख रहा हूं

यदि यह वास्तविक कार्य कोड है तो कृपया अपना प्रश्न संपादित करें और ("कोड" बटन "101/010" का उपयोग करके या केवल उद्धरण के बजाय 4 रिक्त स्थान इंडेंट करें ताकि क्या हम देखते हैं आप क्या देख रहे हैं से मेल खाता है ' "' बटन के साथ) वास्तविक कोड पोस्ट संपादित करें:। इस कोड चल की कोशिश मत करो अपने शायद दुर्भावनापूर्ण

अगर यह काम कर कोड नहीं है!। करें, आपकी जवाब है: यह काम नहीं करता है, तो यह पता लगाने की यह कैसे काम करता मतलब नहीं है की कोशिश कर रहा

संबंधित मुद्दे