Far Manager插件编写2

在上一篇中,插件显示在插件菜单栏中,但是我们还没有实现该插件的功能。

开始之前,我们先来科普一下,在Far Manager中调用插件的几种方法,除了从插件菜单中调用插件,Far Manager还提供了Alt+F1(左侧硬盘菜单)、Alt+F2(右侧硬盘菜单)、宏、lua宏、文件查找结果列表、命令行、编辑器、文件面板、对话框等等。可以说在几乎在任意位置都能调用插件。

要插件实现功能,我们需要导出OpenW函数。当打开插件时会调用OpenW,OpenInfo记录了该插件被触发的信息。结构如下:

struct OpenInfo
{
  size_t StructSize;  //结构大小
  enum OPENFROM OpenFrom;  //触发方式
  const GUID *Guid;  //如果是通过插件菜单打开的,则该guid是插件菜单guid,如果是宏则是宏的guid。
  intptr_t Data; //取决于OpenFrom,不同触发方式,该字段表示的数据不同
};

Message

在OpenW中我们可以根据OpenFrom打开插件方式的不同来实现不同的功能。这里就实现一个小小功能弹一个消息框。

Far Manager插件编写1

由于大部分时间都是使用Far程序,于是想写个插件提升效率,但是网上都没有相关的资料,而且官方提供的文档也只有老毛子语。只能自己摸索摸索。写在博客希望能帮助更多的人少走弯路。

Far Manager(short for File and ARchive Manager),是一款Windows文件管理视图,并且可以执行cmd命令。提供了高度可定制的插件接口。

插件编写

Far插件是一个dll文件,通过Far提供的接口来实现高度可定制化的插件。将该dll文件放入Far的插件目录,调用插件时会加载该dll。

GetGlobalInfoW

Far加载插件时,最先加载就是插件导出的GetGlobalInfoW函数,如果没有导出该函数,这个插件也就不能被Far调用。这个函数主要的功能是提供插件的基本信息。如作者、插件版本、描述和插件路径、GUID等等。

// {1C6B0907-0B96-47C4-A24B-36A9B184AF25}
static const GUID guid_PluginGuid =
{ 0x1c6b0907, 0xb96, 0x47c4,{ 0xa2, 0x4b, 0x36, 0xa9, 0xb1, 0x84, 0xaf, 0x25 } };  //全局变量

void WINAPI GetGlobalInfoW(GlobalInfo *Info)
{
    Info->MinFarVersion = MAKEFARVERSION(
        FARMANAGERVERSION_MAJOR,
        FARMANAGERVERSION_MINOR,
        FARMANAGERVERSION_REVISION,
        FARMANAGERVERSION_BUILD,
        FARMANAGERVERSION_STAGE);

    Info->StructSize = sizeof(GlobalInfo);
    Info->Author = L"Ken";
    Info->Description = L"My First Plugin";
    Info->Title = L"My First Plugin";
    Info->Guid = guid_PluginGuid;
}

pwnable.kr bof

一个简单的缓冲区溢出,用gdb调试,

程序首先传入一个参数0xdeadbeef,然后调用func函数,看看func处代码

_IO_get获取输入的数据,然后比较ebp+8和0xcafebabe是否相等,相等则打印flag。

Pwnable.kr col


从源码分析,我们可以得知:

  • 该程序接受一个参数argv[1]且该参数长度为20
  • check_password函数返回的值等于hashcode。
  • check_password函数的功能就是将argv[1]的值每四位一组,分成5组相加。即0x12345678912就是\x34\x12+\x67\x89+\x34\x12,总之大家知道是什么意思就行了,注意要使用小端。

那我们构造一个符合要求的参数就可以拿到flag了。

    ./col `python -c "print '\xfd\x39\xc3\x03' * 4 + '\xf8\x21\xd0\x12'"

powershell hacker(一): Empirse

文中提及的部分技术可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用!

Empire是一个纯碎的PowerShell后期漏洞利用代理工具,它建立在密码学、安全通信和灵活的架构之上。Empire实现了无需powershell.exe就可运行PowerShell代理的功能。快速部署后期漏洞利用模块,从键盘记录器到Mimikatz,并且能够适应通信躲避网络检测,所有的这些功能都封装在一个以实用性为重点的框架中。

安装Empire

git clone https://github.com/PowerShellEmpire/Empire.git
cd Empire/setup/
/Empire/setup# ./install.sh


Pwnable.kr fd

pwn在维基百科上的解释是

包括电脑(服务器个人电脑)、网站、闸道装置、或是应用程序,”pwn“在这一方面的意思是攻破(”to compromise”,危及、损害)或是控制(”to control”)。在这一方面的意义上,它与骇客入侵与破解是相同意思的。

pwn.kr有着很多的pwn challenge,在这里可以练习和学习pwn。

Reversing.kr Easy ELF

这是韩国一个做challenge的网站,用来测试你的逆向水平,有兴趣的同学可以去试试。

言归正传,这是一个ELF格式的文件,我们需要拿到Linux下运行。随便输入错误的key会提示Wrong!

拖到IDA分析。

我们看到关键地方是左边比较eax与1的大小,eax等于1正确跳到正确分支,不等于1跳到错误分支。

,