记一次JS木马分析 0x00 前言 随着 javascript 这类脚本语言的快速发展,它能展现的内容越来越多样,所运用的功能变得越来越强大。...因为近期偶然发现一个 js 木马文件,所以想探寻一下 js 木马的混淆方法和这个木马起的作用。...下面就来分析一下,这个木马到底做了哪些操作。 判断cmd.exe的路径 代码开始就是执行了一个函数: ? 可以看到,在这里也是对字符进行拼接,最后凑出来的关键字。...第三层混淆就是通过 unicode 编码,利用特定数值替换,然后通过异或等数学方法得到代码明文,对下载的恶意文件中的字符进行解密操作。整个过程体现了对普通杀毒软件的极强的欺骗性和防御性。...也可以从行为分析的角度再次验证 JS 执行过程,因为上面是从代码角度分析的,难免有点点抽象,从 JS 实际操作过程分析,会更加的直观。我们可以看到: ? ? 发现与分析基本一致。
我帮我朋友搭建了一个Wiki.js,过程中也遇到了不少问题,这边写一篇文章总结一下吧 I.介绍 首先,这边我先把官方文档贴出来Wiki.js | Wiki.js (requarks.io) Wiki.js...II.查看要求 首先咱们先看一下要求,官方推荐的是使用PostgreSQL,所以我这里使用它为例,MySQL版本的之后我可能还会出一篇文章 image.png Node.JS官方给出的要求是跑双不跑单...mkdir wiki tar xzf wiki-js.tar.gz -C ....也还算一款美观且实用的软件,对我而言使用起来也比较顺手吧。...如果本文有看不懂的地方,您可以在下面留言,我看到会回复您的。
这次写一写这周翻车的一次逆向吧,整体加密逻辑并不难,但是要没有群里大佬的提醒就栽了。 ? 分析请求 老规矩先分析一波请求。...这次要分析的是首页的「电报」部分,刷新首页发现抓不到「电报」这部分的请求,无奈点击加载更多发起请求(其实并没有区别) ? ?...选中部分就是要分析的请求了,想要快速定位可以使用上一篇用到的 XHR 断点,没看过的看下面: JS逆向 | 分享一个小技巧和XHR断点的小案例 除了此之外,还有一个比较坑的地方,这个网站是定时刷新的,...看到这种e.xxx样式的加密我就想到之前逆向遇到的CryptoJS,对比一下果然差不多,果然一对比和CryptoJS.sha1一毛一样。 接下来就是打脸现场了,我以为到这里就结束了,没想到: ? ?...经过群里大佬的提醒发现其实后面还有一层加密: ? 也怪我经验主义作祟,希望大家不要像我这样的翻车。==> 群里隐藏的大佬是真的多。 ? 本文完。
排查经过 然后突然想到了之前被挂马的事件(Event),f12看看 发现加载了一个陌生的jsmarket.js 看发起程序,应该是被注入了 查看了我所有网站的js,发现只有两个网站的js最后一行都被插入了同样的代码...,而且更改日期都是11月24日 但是我这情况特殊,12月7日换过一次服务(Services)器,被挂马的服务器是之前的服务器,是在12月10日 而这段js是11月24日被插入的,而且两个服务器上都有...这就否定了是之前被挂马插入的js 感觉没什么大问题,想着先把js改回来看看 但是我不会js,不知道该改哪啊((( 于是就想到更新一下程序(论坛用的Flarum,是最新版,但是就想更新一下试试)...还好,更新后最后一行没了 看看其他同日期更改的js,最后面一行也是更新后少了的这一行 所以就可以确定被插入的代码是在js的最后一行,以 (function(_0x516aad,_0x257ccd){...代码样本 这里放出来我的js被插入的代码样本(未格式化),如果有大佬懂的话可以分析一下,我是不懂js((( 被注入的js.js
最进需要用到sql递归更新数据的问题,因为需要兼容Sql Server 2000的语法,所以在Sql Server2008前后有两种不同的写法,这里简单记录一下。...VALUES(2,1) INSERT INTO Test VALUES(3,2) INSERT INTO Test VALUES(4,3) -- 1<<2<<3<<4 # 兼容MSSQL2008以下的版本...# 正向查找 --首先我们将需要递归查到的元素写入#temp临时表 SELECT Id INTO #temp FROM Test WHERE Id=1 WHILE @@ROWCOUNT > 0 BEGIN...--查找子后写入临时表,并排除已经在临时表中的Id INSERT INTO #temp SELECT Id FROM Test WHERE PId IN (SELECT Id FROM #temp)...(SELECT PId FROM #temp) AND Id NOT IN (SELECT Id FROM #temp) END SELECT * FROM #temp # MSSQL2008以后的版本
它们严格的遵守自身的规定,永远也不会有下面的情况出现,因为编译的时候会自己抛出错误而终止运行。...只需要将写好的js脚本和页面发送给用户,这个时候用户的浏览器就会自动生成绚丽多彩的网页。...item.innerHTML="这是十八用来测试的" //这个时候标签的文本其实已经变为了上面的字符串 备注:JavaScript的每一行的末尾不强制使用;,这一点和Python语言极其的类似。...数据类型 相对其他语言,js的数据类型也是一般般,其实并无奇特之处,当然没有字符这个数据类型需要特别注意一下。下面介绍它的基本数据类型。...不过这里却看到了js的一个不足之处,构造函数不能有多个,当然其实本质上只是向构造函数传递的参数不同,而js有着和Python一样的可选参数机制,自然不需要多个构造函数。
在迁移服务器时,频繁的操作数据库,导致了mysql锁死的情况 图一 图一删除表的时候,发现删不掉 于是查看了下mysql,很多进程锁死了。 解决办法: 重启服务器。
文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 记一次在工作中愚蠢的操作,本文关键字:线程安全 (我怎么天天在写Bug啊)--本文适合新手观看...我这边的系统架构是这样的: ?...解决首要的问题 四、寻找问题 现有的条件是: 那批邮箱发送是成功的 小王拿到了别的Task的msgId 所以,判断系统是没问题的,只是msgId在并发的过程中出了问题(拿到其他Task的msgId了)...人肉Debug了一个午休的时间还是没找出来:每个线程都独有一份的操作对象,对象的属性都没有逸出(都在方法内部操作),跟着整块链路一直传递,直至链路结束。看似没啥毛病啊,怀疑是不是方向错了。...所以小王能拿到其他Task的msgId(小王的线程设置完msgId之后,还没返回,三歪的线程又更改了一次msgId,导致小王拿到三歪的msgId了) ---- 总结: 终于知道为啥当初前同事在代码上保留了
1 事情起因 这是aio老陈的交流群里一位群友的提问,交流群里的大佬巨多,我想这个问题应该很快就会得到解决。 果不其然,很快有老哥给出了破解代码,默默点个赞,说句牛逼。...2 经过 我看到起因里有老哥给出解答后,也抱着试一试的态度自己去试试,这次破解的主要内容在aio老陈的公众号写的足够详细了,所以本文就说说我遇到的几个卡住的点,对这次的解密做个笔记,便于之后复习回顾。...其实解密的地方就在下面截图断点的地方: 2.3 找到关键解密的地方 通过两次F11的调试,我找到了解密的地方: 这里我遇到的第二个坑,这里坑的主要原因是我对调试工具的不熟悉,我一直使用的是F10的调试功能...3 运行代码 这里是第三个坑: 抠出全部的js代码后有一个坑的地方,就是在js运行正常的代码在python中调用的时候出现报错,这个报错的解决方案如下: 正常我们抠出的js代码如下:(关键部分) 实际上在...,所以这里将JSON.parse移除了,返回parse前的json字符串,同时为了防止这串字符串内有特殊编码的字符,这里将它转成base64再return” -- Loco大佬 以上就是这次源自群聊的js
文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 记录一次在写代码时愚蠢的操作,本文涉及到的知识点:String不可变性 一、交代背景...所以,这就排除了这个操作在中途被拦截的情况(因为已经入库了,就肯定调用过短信运营商的接口) 后来就去捞日志,看看调用短信运营商返回的Result对象的信息是什么,然后就去问了一下短信运营商可能出现这种问题的原因是什么...不可变的String 我觉得第一点是这样的:我们操作的往往是可变的对象,对象的某些属性改了,我们就认为已经改了。...我觉得第二点是这样的:我们平时操作String对象,都是直接把操作后的结果传过去,这看起来就像修改原对象了一样。...返回一个新的String对象 2.2 怎么改 现在问题已经知道了,String对象是不可变的,对String对象进行操作,“看似”把原来的String对象改了,实际上是生成了一个新的String对象。
系统使用Vue.js作为组件化的基础框架,并于2017年5月份上线了Node.js直出服务。...Vue模板,则会在运行时做一次编译,编译为Render Function,比较耗性能,因此官方推荐的做法是在构建时预编译,并且运行时使用不包含编译函数的精简版。...答案当然是可以:可以通过字符串操作,构造出父组件的Render Function!...先分析第一次replace函数调用。前面提到,每个组件的模板已经编译为Render Function并存在Redis中。...考虑到我们的场景就是字符串比较大,存在循环替换,且是海量服务的场景,因此上面第一次替换,直接改成数组粘合法即可。
但是,随着 js 的功能强大的同时,也带来了更多的安全隐患。由于 js 的混淆效果多样,常见的有 YUI Compressor、Google Closure Compiler、UglifyJS。...因为近期偶然发现一个 js 木马文件,所以想探寻一下 js 木马的混淆方法和这个木马起的作用。...但对人来说,还是可以判断分析出来的: 下面就来分析一下,这个木马到底做了哪些操作。...第三层混淆就是通过 unicode 编码,利用特定数值替换,然后通过异或等数学方法得到代码明文,对下载的恶意文件中的字符进行解密操作。整个过程体现了对普通杀毒软件的极强的欺骗性和防御性。...也可以从行为分析的角度再次验证 JS 执行过程,因为上面是从代码角度分析的,难免有点点抽象,从 JS 实际操作过程分析,会更加的直观。我们可以看到: 发现与分析基本一致。
由于 JS 文件在腾讯云 CDN 上面配置了协商缓存(etag),所以在第二次加载的时候速度提升非常大,基本上不到 1s 就可以加载出来了。 那么这个大文件是什么文件呢?...本地执行了一次 analyze 后,得到的构建图是这样的,可以看出来 vendors 明显远比其他的包都要大,尤其是 xlsx、iview、moment、lodash 这几个库,几乎占了一大半体积。...JS 文件了。...replace 掉(记得要把 link 标签里面预加载的也一起替换掉) // nuxt.config.js config.optimization.splitChunks.cacheGroups.myVendors...,但是点击事件失效了,对比前后两次加载的文件,差别只有这个 my-vendors.js,不清楚为什么点击事件失效,所以最终为了赶时间也就没使用这个方法。
将jsp拆分frame框架,因为采用了第一种方式,一直在考虑用jquery异步请求获取数据,总是但不到效果, 终于在js写吐的时候选择了第二种方式。...//参考网上的使用,大多是下面这个样子,如果涉及静态页面之间定位,是没有问题的 //href:为目标页面----->通过target定位到frame ${org.orgName} //当涉及到数据动态多获取时候上面就失效了; //不确保上面的写法是否正确,但不牵扯到数据的时候 确实能达到效果 //个人认为...href:用于request请求,target用作frame页面定位,frame的src用于指定包含的框架页面
6、 split API属于资源密集型工作,对集群的负载,比如CPU、磁盘、lOAD 负载比较高,在执行此操作前,建议用户对集群业务做一定的降低,并升级集群配置,一定要保证集群有足够的资源区执行此操作。...,这个是split操作的正常流程,后面可用手动进行段合并,让分片大小降下来。...image.png 8、在切的过程中,不要一次切太多分片,可以分批切割,这能减少此API切割带来的节点负载高而导致的OOM的情况。...同时结合Rollover API,我们可以针对非时间序列的索引进行滚动操作,大概流程图如下: image.png 这里,我大致操作步骤如下: 1,给用户指定2个ILM,每个ILM针对不同的业务索引模式,...因此, 经过上面的操作,我们就已经顺利的完成了用户集群后续超级大分片的动态设置、集群索引的长期规划管理问题。
Jsoup它解析HTML成为真实世界的HTML。它与jquery选择器的语法非常相似,并且非常灵活容易使用以获得所需的结果。 安装-运行时依赖关系 <!...内容 outerHtml()获取元素外HTML内容 data()获取数据内容(例如:script和style标签) tag() and tagName() 操作HTML和文本 append(String...(它的位置在DOM树中是相对于它的父节点)小于n,比如:td:lt(3) 表示小 于三列的元素 :gt(n):查找哪些元素的同级索引值大于n,比如:div p:gt(2)表示哪些div中有包含...2个以上的p元素 :eq(n): 查找哪些元素的同级索引值与n相等,比如:form input:eq(1)表示包含一个input标签的Form元素 :has(seletor): 查找匹配选择器包含元素的元素...i)login) :matchesOwn(regex): 查找自身包含文本匹配指定正则表达式的元素 注意:上述伪选择器索引是从0开始的,也就是 提取给定URL中的链接 Document
/configure的时候,可能会提示没有安装yasm,那么执行”yum install -y yasm“即可。 yum install -y yasm ....makeinstall 执行make install时候,会把编译生成的.a归档复制到/usr/local/lib下!
在某次攻防演练信息收集的过程中,偶然发现伪装Github信息泄漏进而钓鱼红队人员的后门。 下面展开有趣的分析溯源过程。...0x01 信息收集 GIthub信息泄漏 根据甲方信息进行常规的Github敏感信息收集偶然发现一个仓库不简单 这不是mysql账号密码泄漏了吗,愉快的打开Navicat 失败....于是访问源码的...还没发现异常 0x02 分析溯源 还好有谨慎的习惯,放入虚拟机瞅瞅。 哦豁,竟然提示不兼容当前系统;看到弹窗有Pyhton代码编写的特征。感觉到前面的打点由过于丝滑,不自然的警觉了起来。...,pyc文件的前8个字节会被抹掉,所以最后要自己添加回去。...另外这个钓鱼的兄弟已经小本本记下了。。。 作者:Kat
领取专属 10元无门槛券
手把手带您无忧上云