首页 » 工作 » 攻防 » 正文

一张存有 JS 代码的图片

发布者:站点默认
2017/08/12 浏览数(1,028) 分类:攻防 一张存有 JS 代码的图片已关闭评论

“图片不是文本文件能往里边写代码吗?”

“你说的是水印吧?”

真的能写,并且不是水印!下面有请今天的 Web Shell 样本:

lyrk

你没有看错,就是上边这张小图、一张一堆小点、看似损坏了的小图片(文末有放大版)。

我们知道RGBA颜色由4个数值组成,依次是红色、绿色、蓝色、透明度,这4个值中除了透明度A外都可以用0到255的数字表示,而0-255刚好可以容纳ASCII字符(A只能用0到100表示,不能存储大于100的ASCII字符)。那么如果把每个像素中除了A外的三种颜色当作字母的ASCII码会是什么样子呢?

我们来看看它里边有什么,我们依次取出10看一下:

黑色 --> rgba( 32, 32, 32, 100) -->  32, 32, 32 --> 空格 空格 空格
青色 --> rgba( 32,118, 97, 100) -->  32,118, 97 --> 空格 v a
紫色 --> rgba(114, 32, 84, 100) --> 114, 32, 84 --> r 空格 T
棕色 --> rgba( 88, 53, 49, 100) -->  88, 53, 49 --> X 5 1
粉色 --> rgba(116,111,110, 100) --> 116,111,110 --> t o n
灰色 --> rgba(103,106,105, 100) --> 103,106,105 --> g j i
绿色 --> rgba( 95,111, 72, 100) -->  95,111, 72 --> _ o H
灰色 --> rgba(101, 97,100, 100) --> 101, 97,100 --> e a d
粉色 --> rgba( 32, 61, 32, 100) -->  32, 61, 32 --> 空格 = 空格
黄色 --> rgba(100,111, 99, 100) --> 100,111, 99 --> d o c

把上边对应的字符整理一下:

    var TX51tongji_oHead = doc

好神奇啊,居然是一句代码!

好了,本文就到这里,有兴趣的可以去看一下里边的完整代码

放大版图片:

lyrk.png_放大版

补充:

1. png图片数据区域的存储规则为每4个值为1个像素即“红色值、绿色值、蓝色值、透明度,红色值、绿色值、蓝色值、透明度,……”,例子:32,32,32,255; 32,118,97,255; 114,32,84,255; 88,53,49,255; 116,111,110,255; 103,106,105,255; 95,111,72,255; 101,97,100,255; 32,61,32,255; 100,111,99,255;……

2. ASCII 的可打印(看得见的)字符的10进制范围是从32到127。

<完>

点击返回顶部
  1. 留言
  2. 联系方式