VCPKG使用libcurl的一些小问题
libcurl
在非MFC程序中使用vcpkg安装的libcurl的时候需要手动引入如下两个库文件,否则会报错。MFC帮我们自动引入了,所以无需手动引入
12#pragma comment(lib, "ws2_32.lib")#pragma comment(lib, "Crypt32.lib")
样本中常见的敏感函数
VirtualAlloc - 为ShellCode申请空间
CreateFileMapping
MapViewofFile
VirtualProtect - 为ShellCode空间改为可读可写可执行
CreateThread
CreateProcess - 启动进程
CreateToolhelp32Snapshot - 创建进程快照,检测虚拟机调试器注入等操作
InternetOpen -
InternetConnect - 连接到服务端
HttpOpenRequest
InternetSetOption - 设置C2Profile
HttpSendRequest
InternetReadFile - 多用于读取payload后续的核心的DLL的反射
CopyFile - 多用于样本的自我拷贝,内网传播等
CobaltStrike环境配置及搭建
Cobaltstrike简介Cobalt Strike是一款美国Red Team开发的渗透测试神器,常被业界人称为CS。是渗透测试中不可缺少的利器。其拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket代理,office攻击,文件捆绑,钓鱼等功能。同时,Cobalt Strike还可以调用Mimikatz等其他知名工具,因此广受黑客喜爱。项目官网:https://www.cobaltstrike.com
安装运行环境因为Cobaltstrike需要Java环境,所以我们安装jdk-8u202-windows-x64.exe,推荐下载离线安装包,否则会很慢很慢。
开启服务端在cmd中运行teamserver.bat文件,命令如下
12teamserver.bat ip 密码# 其意思为你服务器对外公开的IP地址,以及客户端连接该服务器的密码
只要你出现如下图所示信息, 代表你的服务端启动成功
连接服务端服务端启动成功后,那么以管理员权限运行我们目录下的cobaltstrike.exe
Host:填写你的服务器公网IP,或测试时用的内网IP。Port:填写服务器开启 ...
B站专栏复制
打开浏览器控制台[F12键],将下列代码粘贴到Constole中敲回车即可复制专栏内容。
1234document.querySelector('div.article-holder').classList.remove('unable-reprint');document.querySelector('div.article-holder').addEventListener('copy',function(e){ e.clipboardData.setData("text",window.getSelection().toString())})
编译并使用openssl【32/64】
本教程为openssl-1.1.1j.tar.gz为例子
第一步:下载OpenSSL源码
下载地址: https://www.openssl.org/source/个人网盘: https://pan.ltools.vip/#/s/o8TJ
选择 openssl-x.x.x?.tar.gz 其中 x.x.x? 为目前最新版本号解压到任意目录下,后续的目录均用 PATH 代替
第二步:下载安装ActivePerl
下载地址:https://www.activestate.com/activeperl/downloads/个人网盘: https://pan.ltools.vip/#/s/m4sP如果这个网址打不开的话,可以直接百度搜索ActivePerl下载。运行安装程序,一直下一步操作安装完成。这里默认安装在C:\Perl64。
打开 C:\Perl64\site\lib\ActivePerl\Config.pm 文件,将400行左右的代码注释掉,如下图。
第三步:编译64位版本
1、打开VS2019的 x86_x64 Cross Tools Command Prompt for ...
JSONCPP去除格式化输出
详细代码如下所示:旧版
1234// 旧版会提示api过时,所以需要加上下面宏代码#pragma warning(disable: 4996) Json::FastWriter writer; auto strRes = writer.write(root);
新版
1234Json::StreamWriterBuilder streamWriterBuilder;// 设置streamWriterBuilder的属性indentation为空即可去除\n\t格式化streamWriterBuilder["indentation"] = "";auto strRes = Json::writeString(streamWriterBuilder, root);
NIM_Duilib快速入门
第一步:创建Windows 桌面向导1、解决方案和项目不放在同一目录中
2、不勾选任何选项
3、删除多余代码只保留如下代码
123456789101112131415#include "framework.h"#include "DuilibDemo.h"int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow){ UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: 在此处放置代码。 return 0;}
第二步:配置项目环境1、创建bin/libs ...
内联汇编与裸函数
内联汇编
求数组长度 LENGTH 数组名求数组大小 SIZE 数组名求数组类型大小 TYPE 数组名内联汇编不可以使用db dw dq等… 只能使用_emit定义,且一次只能定义一个字节例子:定义三个0x90字节
123456__asm { _emit 0x90 _emit 0x90 _emit 0x90 mov eax, eax}
裸函数可以有局部变量,但是需要自己抬栈,否则会导致堆栈不平衡,使用宏 __LOCAL_SIZE ,这个宏会自动计算裸函数局部变量的大小。例子:
12345678910111213void fun(){ int nValue = 0; __asm { push ebp mov ebp, esp sub esp, __LOCAL_SIZE ... leave //mov esp, ebp pop ebp retn 参数个数 * sizeof 参数类型 }}
Socket例子
TCP例子
服务端123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136#define WIN32_LEAN_AND_MEAN#include <windows.h>#include <Winsock2.h>#pragma comment(lib, "Ws2_32.lib")/// <summary>/// 初始化套接字库/// </summary>void initializati ...
拷贝构造注意事项
当一个类中含有指针时,如下面的CFoo类(在拷贝构造中包含清空自身的方法),对他进行方法传参的拷贝构造,会出现this指针的类对象内指针的地址不是null值。从而导致对野指针进行析构而导致出现严重bug,改为传递指针调用即可避免拷贝构造解决该问题。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546class CFoo{public: CFoo() { m_pRoot = nullptr; } ~CFoo() { } CFoo(const CFoo& obj) { if (&obj == this) { return; } // 调用Clear()时会出现m_pRoot 不是null值对野指针进行析构 m_pRoot = obj.m_ ...