图片水印的攻击与防御(新姿势)

  • A+
所属分类:网络安全文章

1. 攻击

参考 watermark 这份代码进行的测试。可以看到,最终的水印都在id为wm_div_id的div里

  1. <div id="wm_div_id" style="pointer-events: none;"></div>

目前我能想到的方法有以下两种:

删除相关div

利用adblock禁用相关js

1.1 删除水印div

删除水印的div之前,需要找到水印的div。找的方法很简单,审查元素,command+F搜索水印的值就能找到,最后Delete element。如果删除后又生成了,那生成水印的逻辑可能有两种情况:

一直在重复执行「删除div,再生成div」的操作

检测div是否存在,如果不存在则继续生成div

这种情况需要写JavaScript代码去删除div,相关代码很简单,可以google。

1.2 利用adblock禁用相关js

使用该方法的前提是该JS被禁用后,不影响网站正常功能。所以如何寻找生成水印的JS成了关键,方法有如下:

审查元素,command+F查看水印的div id,command+alt+F全局在文件中搜索水印的div id
command+o搜索watermark或者water等关键字,看看是否有water字样的文件
Adblock相关设置在,高级选项 -> 自定义 -> 将相关js URL地址加入到规则列表里。@居易 提供的思路。

我拿某个有水印的网站举例,利用第二种方法。

水印为一个特定的值,所以先搜索这个特定的值,发现水印的div大致是这样

图片水印的攻击与防御(新姿势)

2. 防御

为了防御删除div,水印直接消失的安全问题,需要设置一个循环定时器,定时检测id=wm_div_id的div是否存在,如果不存在,再生成水印。其实这个方案也能被破解。利用JavaScript也写一个循环定时器去删除那个特定的div,只要速度够快,肯定是能删除掉水印。或者一直重复进行「删水印,加水印」操作。

还可以增加一个透明的水印,只要将透明度调低即可,比如我代码里设置的0.01。这种水印虽然肉眼看不见,但是通过photoshop或者stegsolve还是能看到透明的水印。找一个在线的photoshop,调整色阶就能看到透明水印。stegsolve用法很简单,打开软件你就知道如何使用,毕竟CTF神器。

CE安全网

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: