我正在使用IIRF——一个用于漂亮 URL 的 ISAPI 重写过滤器。在这些问题上,我无法从开发人员那里获得太多帮助。我希望通过对这个转储有所了解,这样我就可以在代码中找到有问题的区域并自己重建它。我对C不是超级熟悉,但可以解决。我是否需要使用调试符号构建它才能从转储中获取任何有用的信息?
这些堆栈溢出异常发生在我们的实时生产 Web 服务器上,因此我无法使用调试模式来单步执行此代码。发生的事情是我的应用程序池进程 (w3wp.exe) 收到此错误事件:
为应用程序池“dotNET 池”提供服务的进程与万维网发布服务发生了致命的通信错误。进程 ID 为“6924”。数据字段包含错误号。
有人可以帮我理解这些数据吗?它是来自 IIS 调试诊断工具的转储。我如何解释它并找到异常的来源?它似乎是第 3 方 PCRE 正则表达式库中的一个例外。
WARNING - DebugDiag was not able to locate debug symbols for IsapiRewrite4.dll, so the information below may be incomplete.
In w3wp__PID__3760__Date__06_23_2009__ Time_01_29_55PM__916__Second_Chance_Exception_C00000FD.dmp the assembly instruction at IsapiRewrite4!pcre_exec+12f9 in C:\IIRF1.2.15R5\IsapiRewrite4.dll has caused a stack overflow exception (0xC00000FD) when trying to write to memory location 0x00fc2be8 on thread 5
Type of Analysis Performed Crash Analysis
Machine Name WEB
Operating System Windows Server 2003 Service Pack 2
Number Of Processors 4
Process ID 8056
Process Image c:\WINDOWS\system32\inetsrv\w3wp.exe
System Up-Time 0 day(s) 09:26:25
Process Up-Time 0 day(s) 02:17:00
Thread 4 - System ID 6624
Entry point w3tp!THREAD_MANAGER::ThreadManagerThread
Create time 6/23/2009 11:12:56 AM
Time spent in user mode 0 Days 0:0:40.906
Time spent in kernel mode 0 Days 0:0:6.312
Function Arg 1 Arg 2 Arg 3 Source
IsapiRewrite4!pcre_exec+12f9 08166a27 01b6741f 081669b8
IsapiRewrite4!pcre_exec+2779 08166a27 01b6746b 081669b8
IsapiRewrite4!pcre_exec+1660 08166a26 01b6741f 081669b8
IsapiRewrite4!pcre_exec+2779 08166a26 01b6746b 081669b8
IsapiRewrite4!pcre_exec+1660 08166a25 01b6741f 081669b8
IsapiRewrite4!pcre_exec+2779 08166a25 01b6746b 081669b8
IsapiRewrite4!pcre_exec+1660 08166a24 01b6741f 081669b8
IsapiRewrite4!pcre_exec+2779 08166a24 01b6746b 081669b8
IsapiRewrite4!pcre_exec+1660 08166a23 01b6741f 081669b8
IsapiRewrite4!pcre_exec+2779 08166a23 01b6746b 081669b8
IsapiRewrite4!pcre_exec+1660 08166a22 01b6741f 081669b8
[...snip...]
更新此调试过程
我相信我找到了罪魁祸首,在调整 IIS 调试诊断工具以提供更多信息后,我发现 URL 如下所示。它似乎类似于 SQL 注入攻击,但我不认为是 SQL 注入。
[original_url]/Forum+Result:+%E8%F1%EF%EE%EB%FC%E7%EE%E2%E0%ED+%ED%E8 %EA%ED%E5%E9%EC+%22Rifsadasy%22;%EF%E8%EA%F2%EE%EA%EE%E4+%E4%E5%F8%E8 %F4%F0%EE%E2%E0%ED;%E7%E0%F0%E5%E3%E8%F1%F2%F0%E8%F0%EE%E2%E0%EB%E8%F1 %FC+100%25+%28%E2%EA%EB%FE%F7%E5%ED+%F0%E5%E6%E8%EC+%F2%EE%EB%FC%EA%EE +%F0%E5%E3%E8%F1%F2%F0%E0%F6%E8%E8%29;
有人见过这种攻击方式吗?他们知道那是什么吗?我尝试使用 HEX、Base64 和其他一些方法对此进行解码,但除了这个 ASCII 文本之外,我什么也没想到:
èñïîëüçîâàí+íèêíåéì+"Rifsadasy";ïèêòîêîä+äåøèôðîâàí;çàðåãèñòðèðîâàëèñü+100%+(âêëþ÷åí+ðåæèì+òîëüêî+ðåãèñòðàöèè);