我试图了解 SLMail 5.5 的漏洞利用。
这是基本流程:
- 我能够控制 EIP 并指向指令“JMP ESP”
- ESP 指向我的 shellcode 的确切开始位置。(Shell 代码在 msfvenom 中使用 shikata_ga_nai 编码器进行编码)
- 由于 ESP 指向我想要的确切位置,我觉得我不认为需要 nop 幻灯片。但是当不使用 nop 时我看到有线结果。我希望有些人可以对此有所了解。
4) 下面是我的 shellcode 没有 NOP 的前几条指令,只要突出显示的奇怪指令被执行,内存中的指令就会发生变化(太奇怪了!!)
0159A128 BF A849F49D MOV EDI,9DF449A8
0159A12D D9E5 FXAM
0159A12F D97424 F4 FSTENV (28-BYTE) PTR SS:[ESP-C] <-- Weird instruction
0159A133 5B POP EBX
0159A134 33C9 XOR ECX,ECX
0159A136 B1 52 MOV CL,52
0159A138 317B 12 XOR DWORD PTR DS:[EBX+12],EDI
0159A13B 83EB FC SUB EBX,-4
0159A13E 03D3 ADD EDX,EBX
执行突出显示的指令后,我的记忆看起来像这样:
0159A12F 0100 ADD DWORD PTR DS:[EAX],EAX
0159A131 0000 ADD BYTE PTR DS:[EAX],AL
0159A133 0000 ADD BYTE PTR DS:[EAX],AL <--Jumping here after the weird instruction
0159A135 00FF ADD BH,BH
0159A137 FF31 PUSH DWORD PTR DS:[ECX]
0159A139 7B 12 JPO SHORT 0159A14D
0159A13B 83EB FC SUB EBX,-4
0159A13E 03D3 ADD EDX,EBX
但是随着 NOP 幻灯片附加到 shellcode,实际上在执行行中的以下指令将被执行,但没有任何麻烦并使漏洞利用工作......
0159A133 5B POP EBX
谁能解释为什么我需要 NOP 幻灯片来阻止这种奇怪的行为。谢谢。