基于web的漏洞攻击的第一步一般是:在landing page中通过<script>标签下的JavaScript脚本引入一些恶意链接。这些脚本往往会採用各种各样的混淆、加密手法来躲避AV和browser的拦截。以使得一些恶意脚本源码不轻易暴露。即使这些landing page被拦截,设计静止的混淆手法也能加大安全project师对恶意代码的分析难度。

利用JavaScript内置的parseInt函数和String对象的fromCharCode函数配合使用,来加密恶意脚本是一种常见的手法。

先简单说明两个函数:

1、parseInt(string, radix):解析一个字符串并返回一个整数

參数说明: string 必须,要被解析的字符串

radix   可选,表示要解析的数字的基数。该值介于2-36之间。假设省略,则表示按十进制来解析(除非第一个參数是以0x开头的字符串。则按16进展来解析)。如     果该參数小于2或大于36则返回NaN。

2、String.formCharCode(numX1, numX2, ..., numXn):介绍一个或多个指定的unicode值。返回相应的字符串

parseInt和fromCharCode配合加密的流程一般是:对于一段数字形式的字符串。由parseInt依次解析为数字,解析出来的数字再由fromCharCode转化为相应的字符串。

以下截取2014-10-06发现的sweet orange EK中的一段脚本为例说明:

<span style="font-size:14px;">var PmD = "e111d1b1ab1df058e249a23c274896bde041c016a0dc1f534e24ce29c31a6d3dbcdd4750b95ed6532bdfa7c16dc0dde4b9013fb32af2770affa5c7fa3d966932ee31d91505f93aa616";
var uSVpT = "8965a5c19132df3e832ad653553bb8d88738b062c9bd71302150ba46ad690554cea9347eda31bb7c5bb0ceaf09a5a590dc7310c34f801270d0ccb59b53b90d408141bd7a729714cc65";
var GOGP = "";
var w = 0x00;
for (var i = 0; i < (PmD.length / 2); i++) {GOGP += String.fromCharCode(parseInt((PmD[w] + PmD[w + 1]), 16) ^ parseInt((uSVpT[w] + uSVpT[w + 1]), 16));w += 2;
}</span>

解密出来的字符串保存在GOGP中,真正内容为:

http://factors.egyptiancottonshirts.com/poindexter/perez/iran/dropdown.js

该链接包括恶意的js脚本,已被chrome拦截:

转载于:https://www.cnblogs.com/blfshiye/p/5163023.html

EK中fromCharCode和parseInt的配合使用相关推荐

  1. 探讨 Java 中 valueOf 和 parseInt 的区别

    文章目录 前言 区别 parseInt valueOf 后记 前言 在编程中,遇到类型转换,好像会经常用到 parseInt 和 valueOf,当然这里只拿 Integer 类型进行陈述,其他类型也 ...

  2. 关于Integer类中parseInt()和valueOf()方法的区别以及int和String类性的转换.以及String类valueOf()方法...

    Integer类中的. 关于parseInt()方法的API文档.  返回的是int类型的 关于valueOf()方法的API文档 返回的是Integer类型的. 关于intValue()方法的API ...

  3. java中parseint函数_java中parseint函数

    使用java中的parseInt()方法,怎么返回一个整数? 1. int是java的基本数据类型,"int n"表示定义了一个int 型的变量n; 2. int n = Inte ...

  4. 渗透测试中使用浏览器的正确姿势

    渗透的时候使用得最多的就是浏览器和burp了,灵活使用浏览器可以使渗透的效率大大提高,这次就分享下我平时用浏览器的一些技巧. 1. 浏览器的选择 首选chrome浏览器,火狐浏览器为辅. mac的话还 ...

  5. angularjs中state的参数4_一文梳理pytorch保存和重载模型参数攻略

    训练过程中保存模型参数,就不怕断电了--沃资基·索德 在训练完成之前,我们需要每隔一段时间保存模型当前参数值,一方面可以防止断电重跑,另一方面可以观察不同迭代次数模型的表现:在训练完成以后,我们需要保 ...

  6. Java forEach中 Lambda Expr中的 final变量要求

    https://my.oschina.net/wadelau/blog/1859419 Java forEach中 Lambda Expr中的 final变量要求 Java8闭包 闭包是一个函数在创建 ...

  7. iOS中 openGL常用函数记录(部分)

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 注:这行代码是用于清楚屏幕.GL_DEPTH_BUFFER_BIT 清除深度缓冲 glVerte ...

  8. html5中Canvas、绘制线条模糊、常见绘制工具、绘制基本图形、绘制图片、面向对象的方式绘制图形图片、绘制文本、帧动画绘制

    Canvas容器: canvas标签用来定义图像的容器,必须配合脚本来绘制图像,canvas也运用于游戏开发.注意:canvas绘制图时会出现线条模糊情况,这是因为显示屏像素和canvas中定义的一个 ...

  9. vue如何使用原生js写动画效果_Vue中的动画效果

    Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果. 包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.css ...

  10. 利用计算机技术全面规划供应,‍ ‍ 利用计算机及网络技术,全面规划供应链中的商流、物流、信息流、资金流等,并进行计划、组织、协调与控制。 ‍ ‍...

    [判断题]英文中 "forty" 一词可以表示数量多,也可以表示数量不确定. [单选题]急性缺氧心脏的变化不包括 [单选题]什么在平面广告中具有传播信息.说服对象.加深记忆等作用? ...

最新文章

  1. 宁波大学计算机专业英语面试的形式,宁波大学信息学院计算机网络2014复试试题(回忆版)...
  2. centos7.3安装tomcat报Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  3. 计算机网络中缓存技术,编程达人
  4. CANopen | 对象字典OD 02 - 修改CANopen节点的心跳报文发送间隔
  5. 使用print写文件
  6. 计算机用公式找出第一名,用公式查找Excel工作表中重复数据
  7. Keil 5 C51与STM32
  8. 记录每天背的单词,准备考研。(2月21日)
  9. MSN与六度分隔理论
  10. 英文写作中常用的转折,并列词组
  11. python opencv 旋转图像大小不变
  12. H5页面WebView在iPhoneX的适配
  13. 编程的同时还能盯股票基金?VSCode这款神器插件绝了!
  14. Coursera视频无法播放解决办法
  15. UI设计师如何应对面试 哪些细节问题不可忽视
  16. 如何搜索百度云盘里的文件
  17. 大家在人生低谷时有多惨,怎么熬过来的(四)
  18. Support for password authentication was removed on August 13, 2021. Please ...
  19. 明翰Java教学系列之认识Java篇V1.3(持续更新)
  20. c语言二级考试程序设计题难吗,计算机二级C语言考试程序设计题

热门文章

  1. javascript事件之:谈谈自定义事件
  2. [转]整理关于java的String 类,equals函数和比较操作符的区别
  3. abstract class和interface
  4. 真分布式SolrCloud+Zookeeper+tomcat搭建、索引Mysql数据库、IK中文分词器配置以及web项目中solr的应用(1)
  5. SpringBoot 之日志logback使用[简单上手版]
  6. iOS简单实现查看更多/收起的效果
  7. 从 JVM 层面理解 i++ 和 ++i 的真正区别!
  8. 雷布斯被骗200w??一行代码值两百万?雷军公开小米新logo翻车了?
  9. 一些常见的代码异味及解决之道
  10. 微服务架构实战:Swagger规范RESTful API