图片地址SRC
审查元素查看图片地址是 Base64 地址,并不是网络地址,不会被墙,根据用户网速加载,不占用服务器带宽,挺好的。控制台的数据是没有任何问题的,然后又看了一下源代码。
IMG标签中的Origanal数据
我从源代码中查看 IMG 标签并没有发现 SRC 属性,但是看到了一个有意思的属性,data-origanal,直觉告诉我,这个数据并不简单,然后我分页加载了一下视频看到加载图片时会加载data-origanal对应的TXT文件。
当我打开TXT文件看了一下其中的数据,第一眼的感觉就是Base64加密数据,呀,太简单了,肯定是图片的Base64地址,我立马和封面的Base64图片地址对比一看,一点都不一样!我又想了一下,难道是图片地址再Base64了一下?然后我继续Base64解密了一下。
乱七八糟,这不是Base64数据,那肯定就是AES加密咯,一个色情网站怎么还花里胡哨!
JS文件简单剖析
全局搜索了一下 data-origanal 和 origanal关键词,,发现了其中一个文件并找打了有关的函数,利用Ajax请求获取TXT文静中的数据,然后并传入一个函数进行解密。
继续搜索关键词 desDecrypt 找到了一个eval加密JS文件。
简单解密了一下,取到了原始函数,截取我们主要用到的两个函数,一个加密,一个解密,如下。
// 秘钥
let asc_key = "jeH3O1VX";
let base_lv = "nHnsU4cX";
// 加密
function desEncrypt(a) {
let tmpiv = CryptoJS.enc.Utf8.parse(base_lv);
let key = CryptoJS.enc.Utf8.parse(asc_key);
var b = CryptoJS.AES.encrypt(a, key, {
iv: tmpiv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
formatter: CryptoJS.format.OpenSSL,
});
return b.ciphertext.toString(CryptoJS.enc.Base64);
}
// 解密
function desDecrypt(a) {
a = a.replace(/\s*/g, "");
let tmpiv = CryptoJS.enc.Utf8.parse(base_lv);
var b = CryptoJS.enc.Utf8.parse(asc_key);
var c = CryptoJS.DES.decrypt(
{ ciphertext: CryptoJS.enc.Base64.parse(a) },
b,
{
iv: tmpiv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
formatter: CryptoJS.format.OpenSSL,
}
);
return c.toString(CryptoJS.enc.Utf8);
}
执行函数并调用了一下解密函数,手动传入了TXT文件中AES加密的数据,并取到了封面图片IMG标签的SRC地址。
个人看法
从文件数据的加密解密还是JS中关键函数的eval加密来说,整体流程走下来,没有任何难度,连麻烦都算不上,怎么说呢,他是用心了还是没用心,我也说不上来。但这个图片渲染的方式我还是第一次见。
如果这个加密如果是为了防爬,我个人认为简直太弱了。
从图片地址加密前后对比来说,加密后的图片地址,也就是TXT文件中的数据比原始图片地址数据大了好多,是挺鸡肋的。
总结
大佬 2023年3月份 你是不是用菜刀弄我网站了?
咱不玩渗透,也没那技术,也没那时间,一向遵法守纪好青年!
每天学一个小技巧!
加油!
大佬,我碰见了一个blob的图片网站,yasuo.xunjiepdf.com/img/,图片压缩完了是blob协议的,怎么找到原始地址?
在线的压缩,没有上传,不存在原地址
围观
网址呢?
下次我注意!
为什么不给网址(愤怒.jpg)
下次我注意!
太厉害了,技术大神,小萌新学到了
原来是Lenk大佬!
图片地址要是blob协议的呢
可能是我见识短浅,没见过blob的图片,你可以百度一下获得你想要的答案
blob视频地址见得挺多,blob图片我只是顺口说说,哈哈
原创内容真的不错,这种加密技术也还是会被墙,应该是可以过一些资源桶的检测。
嗯嗯
技术韩,厉害,玩代码的都感觉特别牛逼。