图片注入 javascript 测试
作者:
| 更新日期:想在自己的QQ空间加上自己的 google 广告,于是想到图片注入 javascript 的方法。
本文首发于公众号:天空的代码世界,微信号:tiankonguse
背景
其实一年可以转广告费只有2$, 主要是学习一些简单的注入技术。
BMP 文件格式简单认识
每个格式的文件都有自己的固定结构或者类似结构。
而 BMP 文件大概分为四部分:
- bmp文件头(bmp file header):提供文件的格式、大小等信息,大小14字节
- 位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息,大小40字节
- 调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表,大小由颜色索引决定
- 位图数据(bitmap data):就是图像数据 大小由图像尺寸决定
一般24位图像是没有调色板的,16位的位图文件的调色板是1024字节。
文件头结构如下
typedef struct {
/* type : Magic identifier,一般为BM(0x42,0x4d) */
unsigned short int type;
unsigned int size;/* File size in bytes,全部的档案大小 */
unsigned short int reserved1, reserved2; /* 保留位 */
unsigned int offset;/* Offset to image data, bytes */
} FILEHEADER;
信息头结构如下
typedef struct {
unsigned int size;/* Info Header size in bytes */
int width,height;/* Width and height of image */
unsigned short int planes;/* Number of colour planes */
unsigned short int bits; /* Bits per pixel */
unsigned int compression; /* Compression type */
unsigned int imagesize; /* Image size in bytes */
int xresolution,yresolution; /* Pixels per meter */
unsigned int ncolours; /* Number of colours */
unsigned int importantcolours; /* Important colours */
} INFOHEADER;
结构参考 o_sun_o .
BMP javascript 注入
有了上面的基础知识,我们就可以尝试注入了。
- 头部第三第四字节修改为 \x2F\x2A, 即 “/*”
- 尾部追加 \xFF
- 尾部追加 \x2A\x2F,对应的js中的注释符号*/
- 尾部追加 \x3D\x31\x3B,对应的=1; 是为了伪造成BMP格式
- 尾部追加 定制的JS代码
本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。