亚洲乱码一卡二卡四卡乱码新区_亚洲乱码中文字幕小综合_亚洲人成电影在线播放_亚洲性色AV一区二区三区_亚洲一区二区三区影院_亚洲中文字幕久久精品无码A_亚洲中文字幕无码专区_伊人热热久久原色播放WWW_在线观看AV永久免费_最新欧洲大片免费在线,欧美日韩成人三级免费看,久久黄色网址,欧美激情内射喷水高潮

首頁
社區(qū)
課程
招聘
通過dlopen函數(shù)打開136字節(jié)大小的so文件可以將藏匿于程序頭表的匯編指令運行,這是如何做到的,。
白露降 2022-12-31 1902

在學習復現(xiàn)某個漏洞的時候,,查閱到了分析文章,該文章地址為該漏洞的分析文章,。在作者進行漏洞利用時,構造了如下的.so文件,。
圖片描述

 

白色框框住的二進制數(shù)據(jù)就是如下圖的匯編指令

 

圖片描述

 

匯編指令的意思就是利用execve系統(tǒng)調(diào)用運行了/tmp/hax腳本,。
當我通過dlopen函數(shù)與openssl的engine參數(shù)加載該.so文件時,,該.so文件都能被運行,且無報錯,,如下圖所示,。

 

圖片描述

 

其中runlib程序代碼,以及/tmp/hax腳本內(nèi)容如下圖所示

 

圖片描述

 

圖片描述

 

openssl的engine參數(shù)最后也是運行了dlopen。
那么問題就是,,為什么dlopen可以運行這個.so的這段匯編指令,,dlopen打開.so文件不應該只能運行.init段的代碼嗎?

 

我簡略分析了一下dlopen的源碼,,也僅僅是打開.so文件讀取ELF頭數(shù)據(jù)進行比對,,然后將程序段載入內(nèi)存,并無直接執(zhí)行指令的代碼,。

 

同時,,該.so文件數(shù)據(jù)的入口地址為0x2,圖1白框的匯編指令位于第一個Dynamic類型的程序頭處,,該程序頭的記錄該程序頭的地址為0x58,,好像怎么樣都不會執(zhí)行到這段匯編指令啊,。
該程序頭的各項數(shù)據(jù)如下圖所示
圖片描述

 

那么請問為什么通過dlopen打開該.so文件就可以運行這段匯編指令呢?

收藏
2條回答
mb_jsalosiw 2022-12-31 2022-12-31編輯

也許是這個
像win的DllMain一樣(?
https://www.cnblogs.com/D3Hunter/p/3175770.html#:~:text=DllMain%E5%8F%AF%E4%BB%A5%E5%9C%A8dll%E5%8A%A0%E8%BD%BD%E5%88%B0%E8%BF%9B%E7%A8%8B%E3%80%81%E7%BA%BF%E7%A8%8B%E6%97%B6%E8%B0%83%E7%94%A8%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%81%9A%E4%BA%9B%E5%88%9D%E5%A7%8B%E5%8C%96%E3%80%81%E6%B8%85%E7%90%86%E7%9A%84%E5%B7%A5%E4%BD%9C%20%E4%BD%86%E5%9C%A8linux%E4%B8%8A%E6%B2%A1%E6%9C%89%E4%B8%93%E9%97%A8%E7%9A%84%E5%87%BD%E6%95%B0%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8gcc%E6%89%A9%E5%BC%A0%E5%B1%9E%E6%80%A7%20__attribute__,%28%28constructor%29%29%20and%20__attribute__%20%28%28destructor%29%29%E6%9D%A5%E5%AE%9E%E7%8E%B0
問就是MAGIC

回復
白露降: 這個是echo指令直接寫入空白文件的,,沒有經(jīng)過編譯,,而且是畸形的elf文件。
回復 2022-12-31
白露降 2023-1-3

https://www.int80.top/23-1-2/
通過調(diào)試分析dlopen源碼已經(jīng)解決該問題,,分析過程分享在上面的博客上了

回復